• 微信分享图片失败


    E/MicroMsg.SDK.WXMediaMessage(17582): checkArgs fail, thumbData is invalid
    发表于2014/11/27 9:43:17  3175人阅读
    分类: android 微信
    微信官网给的Demo中。图片的分享例子他是这么描述的:
                                String url = "http://pic2.nipic.com/20090506/1478953_125254084_2.jpg"; 
                                     
                                 try{ 
                                    WXImageObject imgObj =  new WXImageObject(); 
                                    imgObj.imageUrl = url; 
                                     
                                    WXMediaMessage msg =  new WXMediaMessage(); 
                                    msg.mediaObject = imgObj; 
     
                                    Bitmap bmp = BitmapFactory.decodeStream( new URL(url).openStream()); 
                                    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("img"); 
                                    req.message = msg; 
                                    req.scene = isTimelineCb.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;
                                    api.sendReq(req); 
                                     
                                     // finish(); 
                                }  catch(Exception e) { 
                                    e.printStackTrace(); 
                                    Toast.makeText(SendToWXActivity.this, "Error msg"+e.toString(), 1000).show(); 
                                } 
                         
                                 break; 
                            
     
     而在实际的使用过程中,总是报这样的一个错误,怎么也调用不到微信的分享界面。
     
     
    05-06 10:21:35.276: E/MicroMsg.SDK.WXMediaMessage(19273): checkArgs fail, thumbData is invalid
     好像是图片处理那边出现了问题。细看这个代码。里面有一个将bitmap对象转化成byte数据字节的对象。原先的代码是这样的如下所示:
     
         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(); 
            } 
        }
     
  • 相关阅读:
    webpack2使用ch4-向根目录index.html文件传参并使用参数 使用线上资源 压缩html
    webpack2使用ch3-自动化生成.html和内部引入的js自动更改
    webpack2使用ch2-entry和output简要说明
    webpack2使用ch1-目录说明
    less使用ch1--简单使用
    less使用ch1--认识语法
    vue2购物车ch4-(筛选v-for 点击的那个设置样式 设为默认地址其他 联动 非循环的列表选中和非选中 删除当前选中的列表)
    gulp使用2-gulp-less及watch和错误提示
    gulp使用1-入门指南
    vue2购物车ch3-(过滤器使用 单件商品金额计算 全选全不选 总金额计算 删除商品功能)
  • 原文地址:https://www.cnblogs.com/liujiang04/p/9486653.html
Copyright © 2020-2023  润新知