有一个场景,其中httpentity具有InputStream中图像的二进制数据,用于进一步处理它已在库文件[String str = EntityUtils.toString(httpResponse.getEntity())
]中转换为String,现在我正在尝试从该文件中获取输入流字符串。
采用以下方案来理解问题:
正在运行 - 显示内容
的ImageViewInputStream inStream = getContentResolver().openInputStream(thisPhotoUri);
Bitmap bm = BitmapFactory.decodeStream(inStream);
ImageView view = (ImageView)findViewById(R.id.picture_frame);
view.setImageBitmap(bm);
问题 - ImageView不显示图像
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);
答案 0 :(得分:1)
InputStream.toString()
没有做到,你期待的是什么。它将调用Object.toString()
方法,您将获得类似java.io.InputStream@604c9c17
的内容,而不是流的真实内容!
尝试使用System.out.println(str);
查看其价值是什么。
这就是为什么您无法从此内容重新生成原始InputStream
的原因,因为它不是InputStream
的内容!
您必须以另一种方式阅读流,才能将内容发送到String
!请参阅:Read/convert an InputStream to a String
答案 1 :(得分:1)
您无法直接将InputStream转换为String。这可能是个问题。
String str = inStream.toString();
Take a look at this以确定将InputStream转换为String的方式。
答案 2 :(得分:-1)
这应该是你要找的东西:
InputStream stream = new ByteArrayInputStream(yourString.getBytes("UTF-8"));