1. 程式人生 > >新浪微博分享 SDK 圖片大小限制

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

在使用安卓版新浪微博分享 SDK 中 WebpageObject 的分享圖片時,縮圖和大圖(均為 Bitmap 格式)的最大值分別為 32KB 和 2MB。

關於更多資料大小檢查可以閱讀 WeiboMultiMessage#checkArgs(),textObject,imageObject,mediaObject 的大小限制裡面都有。

有兩個設定圖片的方法:

  • 設定縮圖:WebpageObject.setThumbImage(Bitmap);
  • 設定大圖:WebpageObject.setImageObject(Bitmap);

縮圖的大小限制為 32KB,具體見 文件。注意,網頁中的 “32kb” 是指 32KB。

注意:下面頁面中的圖片(這個小圖是 SDK 自動將大圖縮小後顯示的)不是縮圖,縮圖具體是做什麼用的,知道的同學麻煩賜教下:



我不是縮圖

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