最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
安卓开发之如何在微信分享中加载网络图片作为缩略图
时间:2022-06-25 23:38:11 编辑:袖梨 来源:一聚教程网
这几天在做的一个项目是有一个分享到微信的功能,要实现在分享中添加标题、描述、链接、缩略图实现分享。先来看一下官方的API文档:
网页类型分享示例:
//初始化一个WXWebpageObject对象,填写url
WXWebpageObject webpage = new WXWebpageObject();
webpage.webpageUrl = "网页url";
//用WXWebpageObject对象初始化一个WXMediaMessage对象,填写标题、描述
WXMediaMessage msg = new WXMediaMessage(webpage);
msg.title = "网页标题";
msg.description = "网页描述";
Bitmap thumb = BitmapFactory.decodeResource(getResources(), R.drawable.send_music_thumb);
msg.thumbData = Util.bmpToByteArray(thumb, true);
//构造一个Req
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("webpage");//transaction字段用于唯一标识一个请求
req.message = msg;
req.scene = isTimelineCb.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;
//调用api接口发送数据到微信
api.sendReq(req);
缩略图的设置,就是这一行代码:
msg.thumbData=某bitmap
可见,官方的API只提供了加载本地资源图片的示例,并没有给出加载网络图片作为缩略图的示例代码,当然也很容易实现,只要我们把网络图片转换为Bitmap对象就可以了,可是,当我使用自定义的Bitmap时候,却总是报错,并且报错也不给出任何提示信息,最后才知道微信分享缩略图(thumb)最大64KB,居然有这么一个限制,所以只好做一些处理了。所有实现代码如下:
网络图片转换为Bitmap对象代码:
/**
* 把网络资源图片转化成bitmap
* @param url 网络资源图片
* @return Bitmap
*/
public static Bitmap GetLocalOrNetBitmap(String url) {
Bitmap bitmap = null;
InputStream in = null;
BufferedOutputStream out = null;
try {
in = new BufferedInputStream(new URL(url).openStream(), 1024);
final ByteArrayOutputStream dataStream = new ByteArrayOutputStream();
out = new BufferedOutputStream(dataStream, 1024);
copy(in, out);
out.flush();
byte[] data = dataStream.toByteArray();
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
data = null;
return bitmap;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
private static void copy(InputStream in, OutputStream out)
throws IOException {
byte[] b = new byte[1024];
int read;
while ((read = in.read(b)) != -1) {
out.write(b, 0, read);
}
}
然后把示例代码里的那两行改为如下即可:
Bitmap thumb =Bitmap.createScaledBitmap(GetLocalOrNetBitmap("某网络资源图片"), 120, 120, true);//压缩Bitmap
msg.thumbData = Util.bmpToByteArray(thumb, true);
问题解决,成功实现微信分享。
相关文章
- 王者荣耀侦探能力大测试攻略 王者荣耀侦探能力大测试怎么过 11-22
- 无期迷途主线前瞻兑换码是什么 11-22
- 原神欧洛伦怎么培养 11-22
- 炉石传说网易云音乐联动怎么玩 11-22
- 永劫无间手游确幸转盘怎么样 11-22
- 无期迷途主线前瞻兑换码是什么 无期迷途主线前瞻直播兑换码介绍 11-22