得到图片字节流 用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();
}


你可能感兴趣的:(安卓开发)