微信分享 出错checkArgs fail, thumbData

2019-01-28  本文已影响3人  Allen_han

一、问题现象

在做微信分享功能时,分享网页加缩略图时,点击分享一直没反应。经过查看日志

checkArgs fail, thumbData is invalid  出现这样的一个错误提示。

二、原因分析

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

三、解决方法

修改微信提供的方法:

public static byte[] bmpToByteArray(final Bitmap bmp, final boolean needRecycle) {

        ByteArrayOutputStream output = new ByteArrayOutputStream();

        bmp.compress(Bitmap.CompressFormat.PNG, 100, output);

        if (needRecycle) {

            bmp.recycle();

        }

        byte[] result = output.toByteArray();

        try {

            output.close();

        } catch (Exception e) {

            e.printStackTrace();

        }

        return result;

    }

替换为

localBitmap.compress(Bitmap.CompressFormat.JPEG, 100,

                    localByteArrayOutputStream);

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

        }

    }

-------使用这个方法:注意要是还是不行 ----》 将100 调小!!! 至10 试试--------------

上一篇 下一篇

猜你喜欢

热点阅读