我正在使用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,也许我需要找到解码输入流的正确方法。
有人可以帮忙吗?