Retrofit2下载的图像输入流无法解码?

时间:2016-03-20 08:37:01

标签: android retrofit retrofit2

我正在使用Retrofit2下载图片,我确实从服务器获得了响应,但内容无法解码为png文件。

以下是我用来将流解码为png的代码。

call.enqueue(new Callback<ResponseBody>() {
    @Override
    public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
        InputStream input = response.body().byteStream();
        String avatarPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath()+ "/downloaded.png";
        try {
            OutputStream outputStream = new FileOutputStream(avatarPath);
            Bitmap bitmap = BitmapFactory.decodeStream(input);
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream); // bmp is your Bitmap instance
            input.close();
            outputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Log.v("download  -------", "success");
    }

    @Override
    public void onFailure(Call<ResponseBody> call, Throwable t) {
        Log.v("download -------", "failed");
    }
 });

Bitmap bitmap = BitmapFactory.decodeStream(input); 这里位图为空,似乎输入流不能被识别为png。

我不知道如何正确解码来自InputStream的png文件,在这里我发现原始png大小为21.6K,但是从InputStream我可以看到缓冲区大小是37.6K,也许我需要找到解码输入流的正确方法。

有人可以帮忙吗?

0 个答案:

没有答案