当把okhttp的response.body().byteStream()作为 BitmapFactory.decodeStream()的inputStream时,bitmap 一直返回null,代码如下:
public void onResponse(final Response response) throws IOException {
InputStream inputStream= response.body().byteStream();
bitmap=BitmapFactory.decodeStream(inputStream);
}
但如果先把 response.body().byteStream()用ByteArrayOutputStream存下来,然后再作为BitmapFactory.decodeByteArray()的参数,bitmap的decode又是正常的,代码如下:
public void onResponse(final Response response) throws IOException {
InputStream inputStream= response.body().byteStream();
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
byte[] bmp_buffer;
int len = 0;
while( (len=inputStream.read(buffer)) != -1){
outStream.write(buffer, 0, len);
}
outStream.close();
inputStream.close();
bmp_buffer=outStream.toByteArray();
bitmap = BitmapFactory.decodeByteArray(bmp_buffer, 0, bmp_buffer.length);
}
难道okhttp的byteStream()不能直接作为BitmapFactory.decodeStream()的inputStream?如果是,为什么?谢谢!
public void onResponse(final Response response) throws IOException {
InputStream inputStream= response.body().byteStream();
bitmap=BitmapFactory.decodeStream(inputStream);
}
但如果先把 response.body().byteStream()用ByteArrayOutputStream存下来,然后再作为BitmapFactory.decodeByteArray()的参数,bitmap的decode又是正常的,代码如下:
public void onResponse(final Response response) throws IOException {
InputStream inputStream= response.body().byteStream();
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
byte[] bmp_buffer;
int len = 0;
while( (len=inputStream.read(buffer)) != -1){
outStream.write(buffer, 0, len);
}
outStream.close();
inputStream.close();
bmp_buffer=outStream.toByteArray();
bitmap = BitmapFactory.decodeByteArray(bmp_buffer, 0, bmp_buffer.length);
}
难道okhttp的byteStream()不能直接作为BitmapFactory.decodeStream()的inputStream?如果是,为什么?谢谢!