Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-fluwx
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
openSourceLibrary
clx-fluwx
Commits
bde9d52e
提交
bde9d52e
authored
8月 15, 2018
作者:
JarvanMo
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
TRY FIX
上级
1cb12f56
显示空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
121 行增加
和
13 行删除
+121
-13
WeChatPluginHandler.kt
...in/kotlin/com/jarvan/fluwx/handler/WeChatPluginHandler.kt
+9
-4
CompressImageUtil.java
...main/kotlin/com/jarvan/fluwx/utils/CompressImageUtil.java
+29
-6
ShareImageUtil.java
...rc/main/kotlin/com/jarvan/fluwx/utils/ShareImageUtil.java
+82
-2
main.dart
example/lib/main.dart
+1
-1
没有找到文件。
android/src/main/kotlin/com/jarvan/fluwx/handler/WeChatPluginHandler.kt
浏览文件 @
bde9d52e
...
...
@@ -118,7 +118,12 @@ object WeChatPluginHandler {
private
suspend
fun
getImageByteArrayCommon
(
registrar
:
PluginRegistry
.
Registrar
?,
imagePath
:
String
):
ByteArray
{
return
async
(
CommonPool
){
ShareImageUtil
.
getImageData
(
registrar
,
imagePath
)
val
r
=
ShareImageUtil
.
getImageData
(
registrar
,
imagePath
)
if
(
r
==
null
)
{
byteArrayOf
()
}
else
{
r
}
}.
await
()
}
...
...
@@ -148,13 +153,13 @@ object WeChatPluginHandler {
if
(
thumbnail
.
isNullOrBlank
()){
thumbnail
=
imagePath
}
val
thumbnailData
=
getThumbnailByteArrayCommon
(
registrar
,
thumbnail
!!
)
handleShareImage
(
imgObj
,
call
,
thumbnailData
,
result
)
//
val thumbnailData = getThumbnailByteArrayCommon(registrar,thumbnail!!)
handleShareImage
(
imgObj
,
call
,
null
,
result
)
}
}
private
fun
handleShareImage
(
imgObj
:
WXImageObject
,
call
:
MethodCall
,
thumbnailData
:
ByteArray
,
result
:
MethodChannel
.
Result
){
private
fun
handleShareImage
(
imgObj
:
WXImageObject
,
call
:
MethodCall
,
thumbnailData
:
ByteArray
?
,
result
:
MethodChannel
.
Result
){
val
msg
=
WXMediaMessage
()
msg
.
mediaObject
=
imgObj
...
...
android/src/main/kotlin/com/jarvan/fluwx/utils/CompressImageUtil.java
浏览文件 @
bde9d52e
package
com
.
jarvan
.
fluwx
.
utils
;
import
android.content.Context
;
import
android.util.Log
;
import
java.io.File
;
import
java.io.IOException
;
...
...
@@ -8,6 +9,7 @@ import java.util.ArrayList;
import
java.util.List
;
import
top.zibin.luban.Luban
;
import
top.zibin.luban.OnCompressListener
;
class
CompressImageUtil
{
private
CompressImageUtil
()
{
...
...
@@ -15,22 +17,43 @@ class CompressImageUtil {
public
static
File
compressUtilSmallerThan
(
int
size
,
File
file
,
Context
context
)
{
final
boolean
[]
run
=
new
boolean
[]{
true
};
File
result
=
null
;
File
tmp
=
file
;
final
File
[]
tmp
=
new
File
[]{
file
}
;
List
<
File
>
dirtyFiles
=
new
ArrayList
<>();
try
{
while
(
tmp
.
length
()
>
size
*
1024
)
{
while
(
tmp
[
0
].
length
()
>
size
*
1024
&&
run
[
0
])
{
Log
.
e
(
"--"
,
"runing "
+
tmp
[
0
].
length
());
List
<
File
>
compressedFiles
=
Luban
.
with
(
context
)
.
ignoreBy
(
size
)
.
load
(
tmp
)
.
load
(
tmp
[
0
]
)
.
setTargetDir
(
context
.
getCacheDir
().
getAbsolutePath
())
.
setCompressListener
(
new
OnCompressListener
()
{
@Override
public
void
onStart
()
{
}
@Override
public
void
onSuccess
(
File
file
)
{
Log
.
e
(
"---->"
,
file
.
getAbsolutePath
());
tmp
[
0
]
=
file
;
}
@Override
public
void
onError
(
Throwable
e
)
{
Log
.
e
(
"--->done"
,
e
.
getMessage
());
run
[
0
]
=
false
;
}
})
.
get
();
tmp
=
compressedFiles
.
get
(
0
);
dirtyFiles
.
add
(
tmp
);
dirtyFiles
.
add
(
tmp
[
0
]);
}
result
=
tmp
;
result
=
tmp
[
0
]
;
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
...
...
android/src/main/kotlin/com/jarvan/fluwx/utils/ShareImageUtil.java
浏览文件 @
bde9d52e
...
...
@@ -8,14 +8,22 @@ import com.jarvan.fluwx.constant.WeChatPluginImageSchema;
import
com.jarvan.fluwx.constant.WechatPluginKeys
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
import
java.util.UUID
;
import
io.flutter.plugin.common.PluginRegistry
;
import
okhttp3.OkHttpClient
;
import
okhttp3.Request
;
import
okhttp3.Response
;
import
okhttp3.ResponseBody
;
import
okio.BufferedSink
;
import
okio.Okio
;
import
okio.Source
;
import
top.zibin.luban.Luban
;
public
class
ShareImageUtil
{
...
...
@@ -36,12 +44,34 @@ public class ShareImageUtil {
bmp
=
BitmapFactory
.
decodeFile
(
path
);
result
=
Util
.
bmpToByteArray
(
bmp
,
true
);
}
else
{
result
=
handleNetworkImage
(
registrar
,
path
);
}
return
result
;
}
private
static
byte
[]
handleNetworkImage
(
PluginRegistry
.
Registrar
registrar
,
String
path
)
{
byte
[]
result
=
null
;
InputStream
inputStream
=
openStream
(
path
);
if
(
inputStream
!
=
null
)
{
result
=
streamToByteArray
(
inputStream
)
;
if
(
inputStream
=
=
null
)
{
return
null
;
}
String
suffix
=
".jpg"
;
int
index
=
path
.
lastIndexOf
(
"."
);
if
(
index
>
0
)
{
suffix
=
path
.
substring
(
index
,
path
.
length
());
}
File
snapshot
=
inputStreamToTmpFile
(
inputStream
,
suffix
);
File
compressedFile
=
null
;
compressedFile
=
CompressImageUtil
.
compressUtilSmallerThan
(
35
,
snapshot
,
registrar
.
context
());
if
(
compressedFile
==
null
)
{
return
null
;
}
result
=
fileToByteArray
(
compressedFile
);
return
result
;
}
...
...
@@ -51,6 +81,13 @@ public class ShareImageUtil {
return
Util
.
bmpToByteArray
(
bmp
,
true
);
}
private
static
byte
[]
fileToByteArray
(
File
file
)
{
Bitmap
bmp
=
null
;
bmp
=
BitmapFactory
.
decodeFile
(
file
.
getAbsolutePath
());
return
Util
.
bmpToByteArray
(
bmp
,
true
);
}
private
static
String
getPackage
(
String
assetsName
)
{
String
packageStr
=
null
;
if
(
assetsName
.
contains
(
WechatPluginKeys
.
PACKAGE
))
{
...
...
@@ -60,6 +97,49 @@ public class ShareImageUtil {
return
packageStr
;
}
private
static
File
inputStreamToTmpFile
(
InputStream
inputStream
,
String
suffix
)
{
File
file
=
null
;
BufferedSink
sink
=
null
;
Source
source
=
null
;
OutputStream
outputStream
=
null
;
try
{
file
=
File
.
createTempFile
(
UUID
.
randomUUID
().
toString
(),
suffix
);
outputStream
=
new
FileOutputStream
(
file
);
sink
=
Okio
.
buffer
(
Okio
.
sink
(
outputStream
));
source
=
Okio
.
source
(
inputStream
);
sink
.
writeAll
(
source
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
finally
{
if
(
sink
!=
null
)
{
try
{
sink
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
if
(
source
!=
null
)
{
try
{
source
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
if
(
outputStream
!=
null
)
{
try
{
outputStream
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
}
return
file
;
}
private
static
InputStream
openStream
(
String
url
)
{
OkHttpClient
okHttpClient
=
new
OkHttpClient
.
Builder
().
build
();
Request
request
=
new
Request
.
Builder
().
url
(
url
).
get
().
build
();
...
...
example/lib/main.dart
浏览文件 @
bde9d52e
...
...
@@ -56,7 +56,7 @@ class _MyAppState extends State<MyApp> {
onPressed:
()
{
var
fluwx
=
Fluwx
();
fluwx
.
share
(
WeChatShareImageModel
(
image:
"https://timgsa.baidu.com/timg?image&quality=80&size=b10000_10000&sec=1534342262&di=
450af299b06a8a46220bdbd53d04e1b8&src=http://www.qqzhi.com/uploadpic/2014-09-25/120045136.jp
g"
,
image:
"https://timgsa.baidu.com/timg?image&quality=80&size=b10000_10000&sec=1534342262&di=
ae1078c9080282ec8bbd4909e6669ee2&src=http://img4q.duitang.com/uploads/item/201402/19/20140219123329_QkdNy.jpe
g"
,
transaction:
"hehe"
,
title:
"from dart"
,
scene:
WeChatScene
.
SESSION
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论