起因:
要做一个微信图片分享的功能,但是对于大图会如下问题:

当时没有仔细查看错误日志,单纯的以为是图片太大的问题。
分享图片代码:
1 public void WXsharePic(String transaction, final boolean isSession, Bitmap bitmap) { 2 //初始化WXImageObject和WXMediaMessage对象 3 WXImageObject imageObject = new WXImageObject(bitmap); 4 WXMediaMessage msg = new WXMediaMessage(); 5 msg.mediaObject = imageObject; 6 //设置缩略图 7 Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, 200, 200, true); 8 bitmap.recycle(); 9 msg.thumbData = getBitmapByte(scaledBitmap); 10 //构造一个Req11 SendMessageToWX.Req req = new SendMessageToWX.Req(); 12 req.transaction = transaction + Long.toString(System.currentTimeMillis()); 13 req.message = msg; 14 //表示发送给朋友圈 WXSceneTimeline 表示发送给朋友 WXSceneSession15 req.scene = isSession ? SendMessageToWX.Req.WXSceneSession : SendMessageToWX.Req.WXSceneTimeline; 16 //调用api接口发送数据到微信17 api.sendReq(req); 18 }
解决过程:
想法一:
查看微信的文档,发现如下信息:

初步判定是略缩图过大导致的,准备对略缩图进一步压缩。
但是在调试过程中发现略缩图并没有超过32K,于是这种想法不正确。
想法二:
既然不是略缩图过大,那大概率就是原图过大了。然而微信官方文档上也没有说明原图大小限制,所以也不知道是否是这个原因。
于是准备测试一下是否是这个原因,对原图进一步压缩。
1 public static byte[] bitmap2Bytes(Bitmap bitmap, int maxkb) { 2 ByteArrayOutputStream output = new ByteArrayOutputStream(); 3 bitmap.compress(Bitmap.CompressFormat.PNG, 100, output); 4 int options = 100; 5 while

