微信小程序> 微信分享错误之checkArgsfail,thumbDataisinvalid

微信分享错误之checkArgsfail,thumbDataisinvalid

浏览量:2558 时间: 来源:锁艳老师真美

Android 分享小程序时遇到错误如下:

checkArgs fail, thumbData is invalid

上网查阅文章查到如下结果:

原来微信对缩略图的大小进行了限制。超过32K 就会报参数错误!

可是图片只有18K 并没超过32K,于是定位于图片处理部分出错

原代码:

private void shareWeapp(String id,String img,String title){      //  Toast.makeText(mContext,id,Toast.LENGTH_SHORT).show();        String path = "*********";        WXMiniProgramObject miniProgram = new WXMiniProgramObject();        miniProgram.webpageUrl = "*****";        miniProgram.userName = "***********";        miniProgram.path = path;        WXMediaMessage msg = new WXMediaMessage(miniProgram);        msg.title = title;        msg.description = title;        Bitmap bmp = Util.returnBitMap(img);        Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp, THUMB_SIZE, THUMB_SIZE, true);        bmp.recycle();        msg.thumbData = Util.bmpToByteArray(thumbBmp, true);        SendMessageToWX.Req req = new SendMessageToWX.Req();        req.transaction = buildTransaction("webpage");        req.message = msg;        req.scene = SendMessageToWX.Req.WXSceneTimeline;        api.sendReq(req);    }

其中的bmpToByteArray方法如下:

 public static byte[] bmpToByteArray(final Bitmap bmp, final boolean needRecycle) {        ByteArrayOutputStream output = new ByteArrayOutputStream();        bmp.compress(CompressFormat.PNG, 100, output);        if (needRecycle) {            bmp.recycle();        }                byte[] result = output.toByteArray();        try {            output.close();        } catch (Exception e) {            e.printStackTrace();        }                return result;    }

将其改成
 

public static byte[] bmpToByteArray(final Bitmap bmp, final boolean needRecycle) {int i;int j;if (bmp.getHeight()  bmp.getWidth()) {i = bmp.getWidth();j = bmp.getWidth();} else {i = bmp.getHeight();j = bmp.getHeight();}Bitmap localBitmap = Bitmap.createBitmap(i, j, Bitmap.Config.RGB_565);Canvas localCanvas = new Canvas(localBitmap);while (true) {localCanvas.drawBitmap(bmp, new Rect(0, 0, i, j), new Rect(0, 0,i, j), null);if (needRecycle)bmp.recycle();ByteArrayOutputStream localByteArrayOutputStream = new ByteArrayOutputStream();localBitmap.compress(Bitmap.CompressFormat.JPEG, 100,localByteArrayOutputStream);localBitmap.recycle();byte[] arrayOfByte = localByteArrayOutputStream.toByteArray();try {localByteArrayOutputStream.close();return arrayOfByte;} catch (Exception e) {//F.out(e);}i = bmp.getHeight();j = bmp.getHeight();}}

运行后问题解决。

本文参考:https://www.cnblogs.com/wsfjlagr/p/3711796.html

小程序

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎