Android中如何把网络资源图片转化成bitmap

您所在的位置:网站首页 微信apk下载路径怎么设置的 Android中如何把网络资源图片转化成bitmap

Android中如何把网络资源图片转化成bitmap

2024-07-15 12:18| 来源: 网络整理| 查看: 265

在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); //下载图片


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3