1

有一个场景,httpentity 在 InputStream 中有图像的二进制数据,为了进一步处理,它被转换为库文件 [ String str = EntityUtils.toString(httpResponse.getEntity())] 中的字符串,现在正试图从该字符串中取回输入流。

采取以下方案来理解问题:

工作 - ImageView 显示内容

InputStream 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);
4

3 回答 3

1

InputStream.toString()不做,你所期望的。它将调用该Object.toString()方法,您将得到类似的东西java.io.InputStream@604c9c17,而不是流的真实内容!

试试看System.out.println(str);,它的价值是什么。

这就是为什么您不能InputStream从此内容重新生成原始内容,因为不是InputStream!

您必须以另一种方式读取流才能将内容发送到String! 请参阅:将 InputStream 读取/转换为字符串

于 2014-02-20T10:22:26.450 回答
1

您不能直接将 InputStream 转换为字符串。这可能是问题所在。

String str = inStream.toString();

看一下这个以确定将 InputStream 转换为 String 的方式。

于 2014-02-20T10:25:44.643 回答
-1

这应该是您正在寻找的:

InputStream stream = new ByteArrayInputStream(yourString.getBytes("UTF-8"));

于 2014-02-20T10:20:34.133 回答