Android中如何把网络资源图片转化成bitmap
Posted kaolagirl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android中如何把网络资源图片转化成bitmap相关的知识,希望对你有一定的参考价值。
在android项目开发中,实现微信分享功能会涉及图片的分享,但缩略图分享官方仅支持加载本地的bitmap,那么问题就来了,如果是网络图片那要如何操作呢?想法当然是有的,就是把网络资源图片下载到本地并保存成bitmap不就可以了吗?那么如何去实现呢,下面就来说说吧!
/**
* todo 将网络资源图片转换为Bitmap
* @param imgUrl 网络资源图片路径
* @return Bitmap
* 该方法调用时要放在子线程中
*/
public Bitmap netToLoacalBitmap(String imgUrl){
Bitmap bitmap = null;
InputStream in=null;
BufferedOutputStream out = null;
try{
in = new BufferedInputStream(new URL(imgUrl).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 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);
}
}
该方法调用时要放在子线程中
/**
* todo 把网络图片下载到本地保存成Bitmap图片
* @param imgUrl 网络图片
*/
private void getNetOrBitmap(String imgUrl){
try{
new Thread(){
@Override
public void run() {
super.run();
// 涉及到下载图片,调用netToLoacalBitmap时要放在子线程中
bitmap = netToLoacalBitmap(imgUrl);
}
}.start();
}catch (Exception e){
e.printStackTrace();
}
}
使用
//下载网络图片到本地,并转成Bitmap图片(用于分享)
String imgUrl = null;
try {
imgUrl = Helper.fixImgUrl(goodsList.getString("image")); //网络图片
} catch (JSONException e) {
e.printStackTrace();
}
getNetOrBitmap(imgUrl); //下载图片
以上是关于Android中如何把网络资源图片转化成bitmap的主要内容,如果未能解决你的问题,请参考以下文章