提交 4a09837b authored 作者: mafanwei's avatar mafanwei

Fix Thumbnail

上级 39dd944f
...@@ -15,11 +15,13 @@ ...@@ -15,11 +15,13 @@
*/ */
package com.jarvan.fluwx.handler package com.jarvan.fluwx.handler
import android.util.Log import android.graphics.BitmapFactory
import com.jarvan.fluwx.constant.CallResult import com.jarvan.fluwx.constant.CallResult
import com.jarvan.fluwx.constant.WeChatPluginMethods import com.jarvan.fluwx.constant.WeChatPluginMethods
import com.jarvan.fluwx.constant.WechatPluginKeys import com.jarvan.fluwx.constant.WechatPluginKeys
import com.jarvan.fluwx.utils.ShareImageUtil import com.jarvan.fluwx.utils.ShareImageUtil
import com.jarvan.fluwx.utils.ThumbnailCompressUtil
import com.jarvan.fluwx.utils.Util
import com.jarvan.fluwx.utils.WeChatThumbnailUtil import com.jarvan.fluwx.utils.WeChatThumbnailUtil
import com.tencent.mm.opensdk.modelmsg.* import com.tencent.mm.opensdk.modelmsg.*
import io.flutter.plugin.common.MethodCall import io.flutter.plugin.common.MethodCall
...@@ -164,13 +166,25 @@ internal class FluwxShareHandler { ...@@ -164,13 +166,25 @@ internal class FluwxShareHandler {
}.await() }.await()
} }
private suspend fun getThumbnailByteArray(imageData: ByteArray): ByteArray {
return GlobalScope.async(Dispatchers.Default, CoroutineStart.DEFAULT) {
val bitmap = BitmapFactory.decodeByteArray(imageData,0,imageData.size)
val bmp = ThumbnailCompressUtil.createScaledBitmapWithRatio(bitmap,WeChatThumbnailUtil.SHARE_IMAGE_THUMB_LENGTH,false)
if (bmp == null) {
byteArrayOf()
} else {
Util.bmpToByteArray(bmp, true)
}
}.await()
}
private fun shareImage(call: MethodCall, result: MethodChannel.Result) { private fun shareImage(call: MethodCall, result: MethodChannel.Result) {
val imagePath = call.argument<String>(WechatPluginKeys.IMAGE) val imagePath = call.argument<String>(WechatPluginKeys.IMAGE)
val imageData: ByteArray? = call.argument(WechatPluginKeys.IMAGE_DATA)
GlobalScope.launch(Dispatchers.Main, CoroutineStart.DEFAULT) { GlobalScope.launch(Dispatchers.Main, CoroutineStart.DEFAULT) {
val byteArray: ByteArray? = if (imagePath.isNullOrBlank()) { val byteArray: ByteArray? = if (imagePath.isNullOrBlank()) {
call.argument(WechatPluginKeys.IMAGE_DATA) ?: byteArrayOf() imageData ?: byteArrayOf()
} else { } else {
getImageByteArrayCommon(registrar, imagePath) getImageByteArrayCommon(registrar, imagePath)
} }
...@@ -208,11 +222,15 @@ internal class FluwxShareHandler { ...@@ -208,11 +222,15 @@ internal class FluwxShareHandler {
var thumbnail: String? = call.argument(WechatPluginKeys.THUMBNAIL) var thumbnail: String? = call.argument(WechatPluginKeys.THUMBNAIL)
val thumbnailData = if (thumbnail.isNullOrBlank() && imageData != null) {
getThumbnailByteArray(imageData)
} else {
if (thumbnail.isNullOrBlank()) { if (thumbnail.isNullOrBlank()) {
thumbnail = imagePath thumbnail = imagePath
} }
getThumbnailByteArrayCommon(registrar, thumbnail!!)
}
val thumbnailData = getThumbnailByteArrayCommon(registrar, thumbnail!!)
// val thumbnailData = Util.bmpToByteArray(bitmap,true) // val thumbnailData = Util.bmpToByteArray(bitmap,true)
handleShareImage(imgObj, call, thumbnailData, result) handleShareImage(imgObj, call, thumbnailData, result)
......
...@@ -84,7 +84,9 @@ public class WeChatThumbnailUtil { ...@@ -84,7 +84,9 @@ public class WeChatThumbnailUtil {
public static byte[] thumbnailForCommon(String thumbnail, PluginRegistry.Registrar registrar) { public static byte[] thumbnailForCommon(String thumbnail, PluginRegistry.Registrar registrar) {
File file; File file;
if (thumbnail.startsWith(WeChatPluginImageSchema.SCHEMA_ASSETS)) { if(thumbnail == null || thumbnail.isEmpty()) {
return null;
} else if (thumbnail.startsWith(WeChatPluginImageSchema.SCHEMA_ASSETS)) {
file = getAssetFile(thumbnail, registrar); file = getAssetFile(thumbnail, registrar);
} 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());
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论