在使用安卓版新浪微博分享 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