微信分享出错问题,MicroMsg.SDK.WXMediaMessage: checkArgs fail, thumbData is invalid

本文介绍了在微信分享中遇到的“thumbDataisinvalid”错误及其解决办法。通过调整图片大小和处理方式,最终实现了成功分享。

之前做了个微信分享,隔了一段时间突然发现提示下面错误:

MicroMsg.SDK.WXMediaMessage: checkArgs fail, thumbData is invalid

MicroMsg.SDK.WXApiImplV10: sendReq checkArgs fail

网上查询了目前看到两种解决方法:

1、分享图片大小不能大于32kb。

2、修改以下代码:

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();
        }

事实证明,这两种方法并没有解决我的问题。

在使用第一种方法时并不能解决我的问题,在使用第二种方法时,按照官方demo的方法把图片的大小设置成150*150之后是可以的(不管以前大小多少),我们的图标是300*300并且是需要网络获取,大小也超过了32kb。

我是通过下面这种方法解决的,在获取网络图标的时候使用demo中Util类中getHtmlByteArray(final String url)方法,直接把网络数据转换成byte[]格式,然后转换成Bitmap,

BitmapFactory.decodeByteArray(Util.getHtmlByteArray(imgUrl),300,300)

然后在设置的时候使用

mediaMessage.thumbData = Util.bmpToByteArray(bitmap, true);

这样在分享时就不会报错


开始解析指定的数据库文件 正在测试数据库: F:\日常软件\WeChat\WeChat Files\wxid_9223592212012\Msg\MicroMsg.db 开始测试数据库: F:\日常软件\WeChat\WeChat Files\wxid_9223592212012\Msg\MicroMsg.db 文件大小: 8212480 字节 文件头: 78472c7ca23258e86d23949dfb020d1f 2025-05-13 17:35:38,167 - INFO - 尝试获取微信进程ID,结果: 31236 2025-05-13 17:35:38,167 - DEBUG - Process 31236 is being debugged 2025-05-13 17:35:38,168 - INFO - 成功连接到微信进程,PID: 31236 2025-05-13 17:35:38,171 - INFO - 找到WeChatWin.dll模块,基地址: 0x7ffa1da80000 2025-05-13 17:35:38,171 - INFO - 模块大小: 0x61d7000 2025-05-13 17:35:38,171 - INFO - 搜索范围: 0x7ffa1da80000 - 0x7ffa23c57000 2025-05-13 17:35:38,224 - INFO - 成功读取模块内容,大小: 102592512 字节 2025-05-13 17:35:38,225 - INFO - 尝试使用特征码 558bec83e4f881ec000000005356578bf9 进行扫描 2025-05-13 17:35:38,251 - INFO - 尝试使用特征码 558bec83e4f881ec000000005356578bf98b4d08 进行扫描 2025-05-13 17:35:38,277 - INFO - 尝试使用特征码 558bec83e4f881ec000000005356578bf98b4d088b550c 进行扫描 2025-05-13 17:35:38,298 - INFO - 特征码扫描失败,尝试使用新的方法 2025-05-13 17:35:38,299 - ERROR - 新方法失败: Pymem.pattern_scan_all() takes 2 positional arguments but 4 were given 2025-05-13 17:35:38,299 - ERROR - 未找到有效的密钥 测试失败: 无法获取密钥 数据库解密失败: F:\日常软件\WeChat\WeChat Files\wxid_9223592212012\Msg\MicroMsg.db 解析完成: 成功解密 0/1 个数据库文件 仍然报错
最新发布
05-14
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值