得到图片字节流 用bitmap显示出来


方法一:因为后台返回的直接是个图片的流文件,所以你直接可以把请求的接口地址作为一个url,用imageloader进行加载。此时的地址是带参数的地址,如果需要拼接,需要手动拼接成一个字符串。

方法二:

   从后台返回的图片流文件中读,拿到所有的字节,保存到字节数组中,然后在生成bitmap,然后在bitmap加载到imageview中。

InpuTStream inputstream = response.body().byteStream();
 try {
                    byte[] data=readStream(inputStream);
                    if(data!=null){
                        final Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
                        mHandler.post(new Runnable() {
                            @Override
                            public void run() {
                                mImageInvocebarcode.setImageBitmap(bitmap);
                            }
                        });
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                inputStream.close();


 /*
* 得到图片字节流 数组大小   输入流转化为比特流
* */
  public static byte[] readStream(InputStream inStream) throws Exception{
      ByteArrayOutputStream outStream = new ByteArrayOutputStream();
      byte[] buffer = new byte[1024];
      int len = 0;
      while( (len=inStream.read(buffer)) != -1){
          outStream.write(buffer, 0, len);
      }
      outStream.close();
      inStream.close();
      return outStream.toByteArray();
  }
 
如果产品需求不单单是把图片显示到屏幕上 展示给用户,还要保存到本地,我们只要操作直接数据就行,字节数组中保存了所有的
图片数据上面的readStream简单改一下:  注意问了避免重复,你的图片文件名做一个唯一的,再次进入已经保存的,又点击保存,
就删除原来的在更新为最新的。
public  byte[] readStream(InputStream inStream) throws Exception{
    ByteArrayOutputStream outStream = new ByteArrayOutputStream();
    String path = Environment
            .getExternalStorageDirectory().getAbsolutePath()+"/XXXX/";
    String pathurl = path+orderId+".jpg";
    File file = new File(pathurl);
    if (file.exists()) {
        file.delete();
    }
    FileOutputStream fos = new FileOutputStream(pathurl);
    byte[] buffer = new byte[1024];
    int len = 0;
    while( (len=inStream.read(buffer)) != -1){
        outStream.write(buffer, 0, len);
        fos.write(buffer,0,len);
    }
    outStream.close();
    inStream.close();
    return outStream.toByteArray();
}

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Android,可以通过多种方式创建Bitmap对象。其一种方式是从数据创建Bitmap。引用\[1\]的代码展示了如何从内存数据流解压生成原始位图。该代码使用了GZIPInputStream来解压数据流,并通过Bitmap.createBitmap方法创建了一个新的Bitmap对象。引用\[2\]提到了BitmapFactory类,它可以从各种来源(包括文件、流和字节数组)创建Bitmap对象。另外,Bitmap类还提供了createBitmap方法,可以从原位图指定坐标点开始,挖取一块指定宽高的区域来创建新的Bitmap对象。\[3\]所示。因此,根据需求和数据源的不同,可以选择适合的方法来创建Bitmap对象。 #### 引用[.reference_title] - *1* [Bitmap如何存储原始数据](https://blog.csdn.net/JadynAi/article/details/94357796)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [创建Bitmap](https://blog.csdn.net/u014084081/article/details/118888762)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [android 创建bitmap的多种方式](https://blog.csdn.net/weixin_42392438/article/details/117345160)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值