新浪微博分享 SDK 图片大小限制

在使用安卓版新浪微博分享 SDK 中 WebpageObject 的分享图片时,缩略图和大图(均为 Bitmap 格式)的最大值分别为 32KB 和 2MB。

关于更多数据大小检查可以阅读 WeiboMultiMessage#checkArgs(),textObject,imageObject,mediaObject 的大小限制里面都有。

有两个设置图片的方法:

  • 设置缩略图:WebpageObject.setThumbImage(Bitmap);
  • 设置大图:WebpageObject.setImageObject(Bitmap);

缩略图的大小限制为 32KB,具体见 文档。注意,网页中的 “32kb” 是指 32KB。

注意:下面页面中的图片(这个小图是 SDK 自动将大图缩小后显示的)不是缩略图,缩略图具体是做什么用的,知道的同学麻烦赐教下:


新浪微博分享 SDK 图片大小限制_第1张图片
我不是缩略图

Bitmap 裁减的代码参考如下:

        // 32KB, api doc:http:sinaweibosdk.github.io/weibo_android_sdk/doc/com/sina/weibo/sdk/api/BaseMediaObject.html#setThumbImage(Bitmap)
        int MAX_SIZE_THUMBNAIL_BYTE = 1 << 15;

        // 2MB, api doc: http://sinaweibosdk.github.io/weibo_android_sdk/doc/com/sina/weibo/sdk/api/ImageObject.html#imageData
        int MAX_SIZE_LARGE_BYTE = 1 << 21;

        Bitmap originalImg = BitmapFactory.decodeFile("/sdcard/test2.png");

        // thumbnail
        Bitmap thumbnailImg = originalImg;
        if (thumbnailImg.getByteCount() > MAX_SIZE_THUMBNAIL_BYTE) {

            double scale = Math.sqrt(1.0 * thumbnailImg.getByteCount() / MAX_SIZE_THUMBNAIL_BYTE);
            int scaledW = (int) (thumbnailImg.getWidth() / scale);
            int scaledH = (int) (thumbnailImg.getHeight() / scale);

            thumbnailImg = Bitmap.createScaledBitmap(originalImg, scaledW, scaledH, true);

            // 透明图片
            //             webPageObject.setThumbImage(Bitmap.createBitmap(10, 10, Bitmap.Config.ARGB_8888));

        }

        // large pic
        Bitmap largeImg = originalImg;
        if (largeImg.getByteCount() > MAX_SIZE_LARGE_BYTE) {
            double scale = Math.sqrt(1.0 * largeImg.getByteCount() / MAX_SIZE_LARGE_BYTE);
            int scaledW = (int) (largeImg.getWidth() / scale);
            int scaledH = (int) (largeImg.getHeight() / scale);

            largeImg = Bitmap.createScaledBitmap(originalImg, scaledW, scaledH, true);
        }

        WebpageObject webPageObject = new WebpageObject();
        webPageObject.setThumbImage(thumbnailImg);

        // code stuff

        ImageObject imageObject = new ImageObject();
        imageObject.setImageObject(largeImg);

        // code stuff

你可能感兴趣的:(Android,UI,开发)