美文网首页
微信分享 出错checkArgs fail, thumbData

微信分享 出错checkArgs fail, thumbData

作者: Allen_han | 来源:发表于2019-01-28 10:11 被阅读3次

    一、问题现象

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

    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 试试--------------

    相关文章

      网友评论

          本文标题:微信分享 出错checkArgs fail, thumbData

          本文链接:https://www.haomeiwen.com/subject/wbfkzxtx.html