Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-fluwx
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
openSourceLibrary
clx-fluwx
Commits
3e7159a1
提交
3e7159a1
authored
9月 17, 2018
作者:
JarvanMo
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
support image from content provider on Android
上级
6bebe60a
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
110 行增加
和
14 行删除
+110
-14
ShareImageUtil.java
...rc/main/kotlin/com/jarvan/fluwx/utils/ShareImageUtil.java
+66
-14
WeChatThumbnailUtil.java
...in/kotlin/com/jarvan/fluwx/utils/WeChatThumbnailUtil.java
+44
-0
没有找到文件。
android/src/main/kotlin/com/jarvan/fluwx/utils/ShareImageUtil.java
浏览文件 @
3e7159a1
...
@@ -15,10 +15,14 @@
...
@@ -15,10 +15,14 @@
*/
*/
package
com
.
jarvan
.
fluwx
.
utils
;
package
com
.
jarvan
.
fluwx
.
utils
;
import
android.content.Context
;
import
android.content.res.AssetFileDescriptor
;
import
android.content.res.AssetFileDescriptor
;
import
android.graphics.Bitmap
;
import
android.graphics.Bitmap
;
import
android.graphics.BitmapFactory
;
import
android.graphics.BitmapFactory
;
import
android.net.Uri
;
import
android.os.Build
;
import
android.os.Build
;
import
android.text.TextUtils
;
import
android.util.Log
;
import
com.jarvan.fluwx.constant.WeChatPluginImageSchema
;
import
com.jarvan.fluwx.constant.WeChatPluginImageSchema
;
import
com.jarvan.fluwx.constant.WechatPluginKeys
;
import
com.jarvan.fluwx.constant.WechatPluginKeys
;
...
@@ -56,22 +60,14 @@ public class ShareImageUtil {
...
@@ -56,22 +60,14 @@ public class ShareImageUtil {
}
}
}
else
if
(
path
.
startsWith
(
WeChatPluginImageSchema
.
SCHEMA_FILE
))
{
}
else
if
(
path
.
startsWith
(
WeChatPluginImageSchema
.
SCHEMA_FILE
))
{
Bitmap
bmp
=
null
;
String
pathWithoutUri
=
path
.
substring
(
"file://"
.
length
());
String
pathWithoutUri
=
path
.
substring
(
"file://"
.
length
());
bmp
=
BitmapFactory
.
decodeFile
(
pathWithoutUri
);
result
=
fileToByteArray
(
registrar
,
pathWithoutUri
);
}
else
if
(
path
.
startsWith
(
WeChatPluginImageSchema
.
SCHEMA_CONTENT
)){
int
byteCount
;
File
file
=
getFileFromContentProvider
(
registrar
,
path
);
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
KITKAT
)
{
if
(
file
!=
null
)
{
byteCount
=
bmp
.
getAllocationByteCount
();
result
=
fileToByteArray
(
registrar
,
file
.
getAbsolutePath
());
}
else
{
byteCount
=
bmp
.
getByteCount
();
}
if
(
byteCount
>=
WX_MAX_IMAGE_BYTE_SIZE
)
{
result
=
Util
.
bmpToCompressedByteArray
(
bmp
,
Bitmap
.
CompressFormat
.
JPEG
,
true
);
}
else
{
result
=
Util
.
bmpToByteArray
(
bmp
,
true
);
}
}
}
else
{
}
else
{
// result = handleNetworkImage(registrar, path);
// result = handleNetworkImage(registrar, path);
result
=
Util
.
inputStreamToByte
(
openStream
(
path
));
result
=
Util
.
inputStreamToByte
(
openStream
(
path
));
}
}
...
@@ -92,6 +88,26 @@ public class ShareImageUtil {
...
@@ -92,6 +88,26 @@ public class ShareImageUtil {
return
Util
.
bmpToByteArray
(
bmp
,
true
);
return
Util
.
bmpToByteArray
(
bmp
,
true
);
}
}
private
static
byte
[]
fileToByteArray
(
PluginRegistry
.
Registrar
registrar
,
String
pathWithoutUri
){
byte
[]
result
=
null
;
Bitmap
bmp
=
null
;
bmp
=
BitmapFactory
.
decodeFile
(
pathWithoutUri
);
int
byteCount
;
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
KITKAT
)
{
byteCount
=
bmp
.
getAllocationByteCount
();
}
else
{
byteCount
=
bmp
.
getByteCount
();
}
if
(
byteCount
>=
WX_MAX_IMAGE_BYTE_SIZE
)
{
result
=
Util
.
bmpToCompressedByteArray
(
bmp
,
Bitmap
.
CompressFormat
.
JPEG
,
true
);
}
else
{
result
=
Util
.
bmpToByteArray
(
bmp
,
true
);
}
return
result
;
}
private
static
String
getPackage
(
String
assetsName
)
{
private
static
String
getPackage
(
String
assetsName
)
{
String
packageStr
=
null
;
String
packageStr
=
null
;
...
@@ -164,4 +180,40 @@ public class ShareImageUtil {
...
@@ -164,4 +180,40 @@ public class ShareImageUtil {
}
}
}
}
private
static
File
getFileFromContentProvider
(
PluginRegistry
.
Registrar
registrar
,
String
path
)
{
Source
source
=
null
;
BufferedSink
sink
=
null
;
File
file
=
null
;
try
{
Context
context
=
registrar
.
context
().
getApplicationContext
();
Uri
uri
=
Uri
.
parse
(
path
);
String
suffix
=
null
;
String
mimeType
=
context
.
getContentResolver
().
getType
(
uri
);
if
(
TextUtils
.
equals
(
mimeType
,
"image/jpeg"
)
||
TextUtils
.
equals
(
mimeType
,
"image/jpg"
))
{
suffix
=
".jpg"
;
}
else
if
(
TextUtils
.
equals
(
mimeType
,
"image/png"
))
{
suffix
=
".png"
;
}
file
=
File
.
createTempFile
(
UUID
.
randomUUID
().
toString
(),
suffix
);
InputStream
inputStream
=
context
.
getContentResolver
().
openInputStream
(
uri
);
if
(
inputStream
==
null
)
{
return
null
;
}
OutputStream
outputStream
=
new
FileOutputStream
(
file
);
sink
=
Okio
.
buffer
(
Okio
.
sink
(
outputStream
));
source
=
Okio
.
source
(
inputStream
);
sink
.
writeAll
(
source
);
source
.
close
();
sink
.
close
();
}
catch
(
IOException
e
)
{
Log
.
i
(
"fluwx"
,
"reading image failed:\n"
+
e
.
getMessage
());
}
return
file
;
}
}
}
android/src/main/kotlin/com/jarvan/fluwx/utils/WeChatThumbnailUtil.java
浏览文件 @
3e7159a1
...
@@ -15,9 +15,13 @@
...
@@ -15,9 +15,13 @@
*/
*/
package
com
.
jarvan
.
fluwx
.
utils
;
package
com
.
jarvan
.
fluwx
.
utils
;
import
android.content.Context
;
import
android.content.res.AssetFileDescriptor
;
import
android.content.res.AssetFileDescriptor
;
import
android.graphics.Bitmap
;
import
android.graphics.Bitmap
;
import
android.graphics.BitmapFactory
;
import
android.graphics.BitmapFactory
;
import
android.net.Uri
;
import
android.text.TextUtils
;
import
android.util.Log
;
import
com.jarvan.fluwx.constant.WeChatPluginImageSchema
;
import
com.jarvan.fluwx.constant.WeChatPluginImageSchema
;
import
com.jarvan.fluwx.constant.WechatPluginKeys
;
import
com.jarvan.fluwx.constant.WechatPluginKeys
;
...
@@ -57,6 +61,8 @@ public class WeChatThumbnailUtil {
...
@@ -57,6 +61,8 @@ public class WeChatThumbnailUtil {
}
else
if
(
thumbnail
.
startsWith
(
WeChatPluginImageSchema
.
SCHEMA_FILE
))
{
}
else
if
(
thumbnail
.
startsWith
(
WeChatPluginImageSchema
.
SCHEMA_FILE
))
{
String
pathWithoutUri
=
thumbnail
.
substring
(
WeChatPluginImageSchema
.
SCHEMA_FILE
.
length
());
String
pathWithoutUri
=
thumbnail
.
substring
(
WeChatPluginImageSchema
.
SCHEMA_FILE
.
length
());
file
=
new
File
(
pathWithoutUri
);
file
=
new
File
(
pathWithoutUri
);
}
else
if
(
thumbnail
.
startsWith
(
WeChatPluginImageSchema
.
SCHEMA_CONTENT
))
{
file
=
getFileFromContentProvider
(
registrar
,
thumbnail
);
}
else
{
}
else
{
file
=
downloadImage
(
thumbnail
);
file
=
downloadImage
(
thumbnail
);
}
}
...
@@ -83,6 +89,8 @@ public class WeChatThumbnailUtil {
...
@@ -83,6 +89,8 @@ public class WeChatThumbnailUtil {
}
else
if
(
thumbnail
.
startsWith
(
WeChatPluginImageSchema
.
SCHEMA_FILE
))
{
}
else
if
(
thumbnail
.
startsWith
(
WeChatPluginImageSchema
.
SCHEMA_FILE
))
{
String
pathWithoutUri
=
thumbnail
.
substring
(
WeChatPluginImageSchema
.
SCHEMA_FILE
.
length
());
String
pathWithoutUri
=
thumbnail
.
substring
(
WeChatPluginImageSchema
.
SCHEMA_FILE
.
length
());
file
=
new
File
(
pathWithoutUri
);
file
=
new
File
(
pathWithoutUri
);
}
else
if
(
thumbnail
.
startsWith
(
WeChatPluginImageSchema
.
SCHEMA_CONTENT
))
{
file
=
getFileFromContentProvider
(
registrar
,
thumbnail
);
}
else
{
}
else
{
file
=
downloadImage
(
thumbnail
);
file
=
downloadImage
(
thumbnail
);
}
}
...
@@ -265,4 +273,40 @@ public class WeChatThumbnailUtil {
...
@@ -265,4 +273,40 @@ public class WeChatThumbnailUtil {
}
}
return
suffix
;
return
suffix
;
}
}
private
static
File
getFileFromContentProvider
(
PluginRegistry
.
Registrar
registrar
,
String
path
)
{
Source
source
=
null
;
BufferedSink
sink
=
null
;
File
file
=
null
;
try
{
Context
context
=
registrar
.
context
().
getApplicationContext
();
Uri
uri
=
Uri
.
parse
(
path
);
String
suffix
=
null
;
String
mimeType
=
context
.
getContentResolver
().
getType
(
uri
);
if
(
TextUtils
.
equals
(
mimeType
,
"image/jpeg"
)
||
TextUtils
.
equals
(
mimeType
,
"image/jpg"
))
{
suffix
=
".jpg"
;
}
else
if
(
TextUtils
.
equals
(
mimeType
,
"image/png"
))
{
suffix
=
".png"
;
}
file
=
File
.
createTempFile
(
UUID
.
randomUUID
().
toString
(),
suffix
);
InputStream
inputStream
=
context
.
getContentResolver
().
openInputStream
(
uri
);
if
(
inputStream
==
null
)
{
return
null
;
}
OutputStream
outputStream
=
new
FileOutputStream
(
file
);
sink
=
Okio
.
buffer
(
Okio
.
sink
(
outputStream
));
source
=
Okio
.
source
(
inputStream
);
sink
.
writeAll
(
source
);
source
.
close
();
sink
.
close
();
}
catch
(
IOException
e
)
{
Log
.
i
(
"fluwx"
,
"reading image failed:\n"
+
e
.
getMessage
());
}
return
file
;
}
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论