一起Talk Android吧(第三百九十七回:从网络中获取Bitmap一)

博客介绍了Android中从网络获取Bitmap的方法。背景是为节省时间和空间,无需下载图片到本地。使用时可建立网络连接或发起HTTP请求获取输入流,再用相关方法获取Bitmap。同时提到使用时要注意权限、异常处理和关闭流,还对比了从网络和本地获取Bitmap的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

各位看官们,大家好,上一回中咱们说的是"从本地存储中获取Bitmap"的例子,这一回中咱们介绍的例子是"从网络中获取Bitmap"。闲话休提,言归正转,让我们一起Talk Android吧!

使用背景

在我们日常生活中大部分的App都可以联网,因此也会查看网络上的图片,需求来了:如何查看网络上的图片?我们的思路把图片下载到本地,然后再从本地存储中获取出Bimap并且显示到ImageView上。我们在前面章回中介绍过具体的使用方法,本章回中我们将介绍如何从网络中获取Bitmap文件,这样就可以直接把Bitmap显示到ImageView上,不再需要把图片下载到本地,既节省了时间又节省了空间。

使用方法

首先要建立网络连接,连接类型可以是TCP或者UDP,然后通过连接获取输入流,我们也可以不建立连接,而是直接发起HTTP请求,然后从Http请求中获取输入流。拿到输入流后就可以使用BitmapFactorydecodeStream(inputStream)方法从输入流中直接获取Bitmap文件。下面是示例代码,请大家参考:

    //这是图片文件在模拟器中的存储路径,图片文件由模拟器中自带的相机拍摄而来。
    String filePath = "/sdcard/Pictures/IMG_20221023_184223.jpg";
    //确认图片文件是否存在,注意:模拟器重新启动后会自动删除Pictures目录下的文件
    File file = new File(filePath);
    if(!file.exists()) {
        return;
    }

    //获取文件的输入流,可以通过文件获取,也可以直接使用文件的存储路径获取
    FileInputStream inputStream = null;
    try {
    //  inputStream = new FileInputStream(filePath);
        inputStream = new FileInputStream(file);
    } catch (FileNotFoundException e) {
            e.printStackTrace();
    }

    mBitmap = BitmapFactory.decodeStream(inputStream);
  //mBitmap = BitmapFactory.decodeStream(inputStream,null,options);

    //把Bitmap文件绑定到ImageView控件上显示出来
    if(mBitmap == null)
        mImageView.setImageBitmap(mBitmap);

在上面的代码中没有建立网络连接也没有发起HTTP请求,而是使用本地文件的输入流代替了网络中的输入流,这只是为了简化代码而做的处理,因为它们的效果相似。其实decodeFile()的源代码中调用了decodeStream()方法来获取Bitmap文件。此外,关于网络连接和内容可以点击这里查看以前博客中的内容。

注意事项

使用网络连接时需要获取网络操作的权限,涉及到流操作时需要处理异常,并且在操作完成后关闭流,上面的示例代码中就没有关闭流的操作。此外,代码中注释掉了一个重载方法的使用示例:

mBitmap = BitmapFactory.decodeStream(inputStream,null,options);

此方法中的第二个参数用来输出内容,一般不需要,因此将其设置为null,第三个参数是Options类型的对象,主要用来对图片做缩放,这个内容刚刚介绍过,因此不再赘述。

对比总结

从网络中获取Bitmap和从本地存储中获取Bitmap的方法类似,关键是获取到输入流,然后使用BitmapFactory的decodeXXX方法来获取Bitmap,这些方法使用起来相似,如果觉得方法太多太混乱 ,可以使用decodeStream()方法,它的参数是输入流,不管是本地存储中还是网络,拿到输入流后都可以使用此方法来获取Bitmap文件。

看官们,关于Android中"从网络中获取Bitmap"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值