安卓开发之如何在微信分享中加载网络图片作为缩略图

这几天在做的一个项目是有一个分享到微信的功能,要实现在分享中添加标题、描述、链接、缩略图实现分享。先来看一下官方的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);

问题解决,成功实现微信分享。

时间: 2024-09-15 01:14:01

安卓开发之如何在微信分享中加载网络图片作为缩略图的相关文章

ios-IOS&Android开发:如何从大量未加载的数据中加载一定量的数据到列表中

问题描述 IOS&Android开发:如何从大量未加载的数据中加载一定量的数据到列表中 绝大多数新闻资讯类应用开发过程中都会遇到这么一个问题: 规定每次从服务器最多只能获取20条数据,第一次刷新获取了20条最新的数据,添加到列表中,过一段时间有了30条未刷新的记录,这下问题来了:第二次刷新时是获取最新的20条还是接着第一次获取之后的20条数据放在列表前面?前者会导致列表中间空缺一部分数据,后者问题是要多刷新几次才能把所有数据获取到. 有过相关开发经验的大神们来说说你们的解决方案. 解决方案 刷新

仿微信中加载网页时带线行进度条的WebView的实现

finddreams:http://blog.csdn.net/finddreams/article/details/44172639  为了仿微信中加载网页时带进度条的WebView的实现,首先我们来看一下微信中的效果是什么样的:  明确需求之后,我们来开始动手做,首先我们来自定义一个带进度条的WebView,名字为ProgressWebView: <code class="hljs java has-numbering" style="display: block;

微信小程序加载更多 点击查看更多_javascript技巧

本文实例为大家分享了微信小程序加载更多功能实现的具体代码,供大家参考,具体内容如下 微信小程序加载更多,是将之前的数据和点击加载后请求的数据用concat拼接在一起并执行setData,下面是一个简单的栗子: index.wxml代码如下 <view wx:for="{{duanziInfo}}" wx:for-item="name" wx:for-index="id"> <view class="duanzi-vie

从资源中加载皮肤

由于单位上最近要开发一个内部使用的小型项目,我需要一个运行稳定的,能够将皮肤文件放到资源里的并且易于使用的界面开发包,当然,免费的最好.于是利用google一阵狂搜,嘿,真还找到了这样的一个开发库:AppFace For VC 0.2. AppFace For VC 支持Win9X/NT/2K/XP,UNICODE/ANSI,能够对目标进程里的所有Widows标准控件,系统菜单,通用对话框等实现换肤,对非商业用途而言,它是完全免费的.关键的是AppFace的使用非常简单,很容易添加到已有的工程中

安卓listview加载网络图片时,当时用了软引用之后,是不是就不用在使用二级缓存机制了

问题描述 安卓listview加载网络图片时,当时用了软引用之后,是不是就不用在使用二级缓存机制了 软引用不就是避免OOM的吗,和二级缓存机制的作用是一样的吧,可能二级缓存会更打程度的减少访问网络的次数吧,,但是如果在一个listview加载网络图片的项目中,是不是这二者选择一个用就行了? 解决方案 首先,ListView加载图片,使用什么软引用什么的,其实都是避免oom,那么你可以做到一下几点 1.使用缓存,至于你说的两种,任意一种都是可以的,起码起到了作用 2.当ListView去网络读取图

Android开发之搜芽项目的图片加载问题(使用Volley进行网络图片加载)

搜芽的移动开发这几天进度相对来说非常的快.但是美中不足的就是网络图片的加载问题.我有两套方案: 1)沿用迅雷动漫的图片加载.迅雷动漫也是用的一个开源的库.但是不知道是我使用出了问题还是真的是它的问题.在我迅速的下拉和回倒的时候, 不确定的会出现崩溃.logcat显示loadImage里面出现了内存溢出.out of memory..这个我想应该不是我的问题. 2)采用外包的AsyncImageLoader.这个文件我没有仔细看.然后实验结果是,加载图片巨慢.而且容易导致卡顿. 所以,我将希望转向

关于Android--qq和微信聊天列表加载图片的问题

问题描述 关于Android--qq和微信聊天列表加载图片的问题 我这边在做Android方法的即时聊天的东西,这里消息聊天列表有图片消息,采用的是动态计算缩放大小,所以图片消息的大小是不固定的.我现在遇到的问题是,在进入消息列表的时候,因为图片还没有加载只是显示占位图,这里占位图是最小尺寸的,所以当图片加载完后,图片消息会将后面的消息顶下去,看不到.因为我的列表显示的图片压缩是在发送图片之后才用Glide加载时进行的,所以没有将图片的大小传递在消息中,不知道有什么办法能在第一次进入消息列表时将

从资源中加载皮肤, 使用免费界面库 AppFace For VC 0.2 美化您的软件

由于单位上最近要开发一个内部使用的小型项目,我需要一个运行稳定的,能够将皮肤文件放到资源里的并且易于使用的界面开发包,当然,免费的最好.于是利用google一阵狂搜,嘿,真还找到了这样的一个开发库:AppFace For VC 0.2 . AppFace For VC 支持Win9X/NT/2K/XP,UNICODE/ANSI,能够对目标进程里的所有Widows标准控件,系统菜单,通用对话框等实现换肤,对非商业用途而言,它是完全免费的.关键的是AppFace的使用非常简单,很容易添加到已有的工程

解析Java和Eclipse中加载本地库(.dll文件)的详细说明_java

最近在做的工作要用到本地方法,需要在Java中加载不少动态链接库(以下为方便延用Windows平台下的简写dll,但并不局限于Windows).刚刚把程序跑通,赶紧把一些心得写出来,mark.也希望对大家的类似工作有所帮助首先,应当明确,dll有两类:(1)Java所依赖的dll和,(2)dll所依赖的dll.正是由于第(2)种dll的存在,才导致了java中加载dll的复杂性大大增加,许多说法都是这样的,但我实验的结果却表明似乎没有那么复杂,后面会予以详细阐述.其次,Java中加载dll的方式