如何将二进制字符串转换为位图?

时间:2017-11-21 10:54:09

标签: android android-bitmap

我是android新手。我有一个问题是在api中使用改造将我的图像作为二进制文件传递但是在获得相同的二进制字符串时,无法将二进制字符串再次转换为Bitmap。下面我传递二进制字符串得到响应。如果有人能帮助我,那将是一个很大的帮助。

"????\u0000\u0010JFIF\u0000\u0001\u0001\u0000\u0000H\u0000H\u0000\u0000??\u0000\u0011\b\u0002X\u0002?\u0003\u0001\"\u0000\u0002\u0011\u0001\u0003\u0011\u0001??\u0000\u001f\u0000\u0000\u0001\u0005\u0001\u0001\u0001\u0001\u0001\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b??\u0000?\u0010\u0000\u0002\u0001\u0003\u0003\u0002\u0004\u0003\u0005\u0005\u0004\u0004\u0000\u0000\u0001}\u0001\u0002\u0003\u0000\u0004\u0011\u0005\u0012!1A\u0006\u0013Qa\u0007\"q\u00142???\b#B??\u0015R??$3br?\t\n\u0016\u0017\u0018\u0019\u001a%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz???????????????????????????????????????????????????????????????????????????\u0000\u001f\u0001\u0000\u0003\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b??\u0000?\u0011\u0000\u0002\u0001\u0002\u0004\u0004\u0003\u0004\u0007\u0005\u0004\u0004\u0000\u0001\u0002w\u0000\u0001\u0002\u0003\u0011\u0004\u0005!1\u0006\u0012AQ\u0007aq\u0013\"2?\b\u0014B????\t#3R?\u0015br?\n\u0016$4?%?\u0017\u0018\u0019\u001a&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz

2 个答案:

答案 0 :(得分:0)

使用此代码,

    String dataValue="";
    byte[] bytes = dataValue.getBytes();
    Bitmap bmp= BitmapFactory.decodeByteArray(bytes, 0, bytes.length);

试试这个。

答案 1 :(得分:0)

您可以将字节数组直接写入文件,并使用该文件执行任何操作:

 public void writeToFile(byte[] data, String fileName) throws IOException{
  FileOutputStream out = new FileOutputStream(fileName);
  out.write(data);
  out.close();
}

此外,如果你有二进制流实例,你可以直接从流创建一个位图实例,你可以使用BitmapFactory并转换为位图:

Bitmap image = BitmapFactory.decodeStream(stream);

您可以使用以下函数下载图像文件,其中body是retrofit2.0 responsebody instance:

 private void DownloadImage(ResponseBody body) {

    try {
        InputStream in = null;
        FileOutputStream out = null;

        try {
            in = body.byteStream();
            out = new FileOutputStream("/sdcardpath" + "imagefilename.jpg");
            int c;

            while ((c = in.read()) != -1) {
                out.write(c);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (in != null) {
                in.close();
            }
            if (out != null) {
                out.close();
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}