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的主要内容,如果未能解决你的问题,请参考以下文章

什么软件可以把图片转化成visio格式的

怎么把BMP格式的照片转化成JPG的?详细

如何把html转化为图象

如何在python中把一个set转化成另外一个list的名称?

如何将视频转换成图片

怎样把TIF转化为JPG图片格式