有一个场景,其中http实体在输入流中具有图像的二进制数据,为了进一步处理,它被转换为库文件中的字符串[String str = EntityUtils.toString(httpResponse.getEntity())
],现在我试图从该字符串中获取输入流。
采用以下方案来了解问题:
工作 - 图像视图与内容一起显示
InputStream inStream = getContentResolver().openInputStream(thisPhotoUri);
Bitmap bm = BitmapFactory.decodeStream(inStream);
ImageView view = (ImageView)findViewById(R.id.picture_frame);
view.setImageBitmap(bm);
问题 - 图像视图不与图像一起显示
InputStream inStream = getContentResolver().openInputStream(thisPhotoUri);
String str = inStream.toString();
InputStream is = new ByteArrayInputStream(str.getBytes());
Bitmap bm = BitmapFactory.decodeStream(is);
ImageView view = (ImageView)findViewById(R.id.picture_frame);
view.setImageBitmap(bm);
不能直接将输入流转换为字符串。这可能是问题所在。
String str = inStream.toString();
看看这个来确定将输入流转换为字符串的方法。
InputStream.toString()
不做,你所期望的。它将调用 Object.toString()
方法,你会得到类似 java.io.InputStream@604c9c17
的东西,而不是流的真实内容!
尝试一个System.out.println(str);
,看看它的价值是什么。
这就是为什么你不能从这个内容重新生成原始InputStream
,因为它不是InputStream
的内容!
您必须以另一种方式读取流才能将内容发送到String
!请参阅:读取/转换输入流到字符串
这应该是您要查找的内容:
InputStream stream = new ByteArrayInputStream(yourString.getBytes("UTF-8"));