分享微信微信朋友圈踩坑

Posted 汤米粥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分享微信微信朋友圈踩坑相关的知识,希望对你有一定的参考价值。

分享微信朋友圈没反应,也没什么报错信息,网上大家都知道的是thumbData不能超过32K,可是我已经压缩到32K了,还是调不起来。我再拿一个一点的图分享,发现能分享起来。最后发现原来主图也有尺寸限制,可没有哪儿说到这个,太坑了。

  //主图尺寸过大也分享不出来
                        final Matrix m = new Matrix();
                        float scale = 1600f / bitmap.getWidth();
                        m.setScale(scale, scale);
                        Bitmap main = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), m, true);

                        WXImageObject imgObj = new WXImageObject(main);

                        WXMediaMessage msg = new WXMediaMessage();
                        msg.mediaObject = imgObj;
                        final Matrix m2 = new Matrix();
                        float scale2 = 200f / bitmap.getWidth();
                        m2.setScale(scale2, scale2);
                        Bitmap thumb = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), m2, true);

                        //设置缩略图
                        msg.thumbData = UMBitmapUtil.compressBitmap(UMBitmapUtil.bitmap2Bytes(thumb, Bitmap.CompressFormat.JPEG), 32 * 1024, Bitmap.CompressFormat.JPEG);
                        if (desc != null) 
                            msg.description = desc;
                        

                        //构造一个Req
                        SendMessageToWX.Req req = new SendMessageToWX.Req();
                        req.transaction = buildTransaction("image");
                        req.message = msg;
                        req.scene = toTimeline ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;

                        IWXAPI api = getWXApi(context);
                        api.sendReq(req);
 public static byte[] compressBitmap(byte[] paramArrayOfByte, int paramInt, Bitmap.CompressFormat paramCompressFormat) 
        int i = 0;
        if ((paramArrayOfByte != null) && (paramArrayOfByte.length >= paramInt)) 
            ByteArrayOutputStream localByteArrayOutputStream = new ByteArrayOutputStream();
            Bitmap localBitmap = BitmapFactory.decodeByteArray(paramArrayOfByte, 0, paramArrayOfByte.length);

            int j = 1;

            double d = 1.0D;
            while ((i == 0) && (j <= 10)) 
                d = Math.pow(0.8D, j);
                int k = (int) (100.0D * d);
                Log.d("BitmapUtils", "quality = " + k);
                localBitmap.compress(paramCompressFormat, k, localByteArrayOutputStream);
                Log.d("BitmapUtils", "WeiXin Thumb Size = " + localByteArrayOutputStream
                        .toByteArray().length / 1024 + " KB");
                if ((localByteArrayOutputStream != null) && (localByteArrayOutputStream.size() < paramInt)) 
                    i = 1;
                 else 
                    localByteArrayOutputStream.reset();
                    j++;
                
            
            if (localByteArrayOutputStream != null) 
                byte[] arrayOfByte = localByteArrayOutputStream.toByteArray();
                if ((arrayOfByte != null) && (arrayOfByte.length <= 0)) 
                    Log.e("BitmapUtils", "###32KB,");
                
                return arrayOfByte;
            
        
        return paramArrayOfByte;
    

以上是关于分享微信微信朋友圈踩坑的主要内容,如果未能解决你的问题,请参考以下文章

Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等

网页分享到微信微博QQ空间百度贴吧等

Androi:ListView+GridView实现仿微信微博朋友圈无焦点冲突

分享到微信微博空间等第三方平台的JS代码

flutter 分享功能 ios端 利用MobTech的ShareSDK进行分享 支持分享到微信微信小程序网页qq微博等主流平台

安卓调用系统自带分享功能分享文字,分享大图片,仿好奇心日报分享长图片(不用申请微信微博官方sdk就能直接分享)