zoukankan      html  css  js  c++  java
  • Android 微信SDK图片分享(checkArgs fail, thumbData is invalid)

    微信官网给的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();
            }
        }

    现在就可以对图片进行分享了。 有更好的解决办法,希望可以留言 !!!

  • 相关阅读:
    SQVI和SAP查询QUERY的区别和使用注意事项
    hdu 4119 Isabella's Message
    HaProxy+Keepalived+Mycat高可用群集配置
    Android之RecyclerView简单使用(三)
    2.CCGridAction(3D效果),3D反转特效,凸透镜特效,液体特效,3D翻页特效,水波纹特效,3D晃动的特效,扭曲旋转特效,波动特效,3D波动特效
    怎样cp文件夹时忽略指定的文件夹和文件
    使用boost::property_tree生成带attribute的xml
    数据结构:中序线索二叉树
    像音乐播放App一样移动背景
    【EasyUi】页面设计必学之Layout
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/7872940.html
Copyright © 2011-2022 走看看