新浪微博分享 SDK 圖片大小限制
阿新 • • 發佈:2019-01-01
在使用安卓版新浪微博分享 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