将输入流转换为位图

46

我在将来自Web的输入流转换为位图时遇到问题。仅当输入图像类型为.BMP(位图)时才会出现问题:在这种情况下,bitmapFactory.decodeStream返回null

有什么提示可以解决此问题或应该继续调试哪里?

平台:Android(Honeycomb)

URLConnection conn = url.openConnection();
conn.connect();

inputStream = conn.getInputStream();

bufferedInputStream = new BufferedInputStream(inputStream);

bmp = BitmapFactory.decodeStream(bufferedInputStream);

1
有没有任何日志错误可以帮助解决问题? - Amir Raminfar
2个回答

72

谢谢 @Amir 指出了这个日志。发现了下面这行代码:

decoder->decode returned false
这似乎是一个常见的问题。我通过搜索找到了一个解决方案。 我的以前的代码:
URLConnection conn = url.openConnection();
conn.connect();

inputStream = conn.getInputStream();

bufferedInputStream = new BufferedInputStream(inputStream);

bmp = BitmapFactory.decodeStream(bufferedInputStream);

正在工作的代码:

HttpGet httpRequest = null;

try {
    httpRequest = new HttpGet(url.toURI());
} catch (URISyntaxException e) {
    e.printStackTrace();
}

HttpClient httpclient = new DefaultHttpClient();

HttpResponse response = (HttpResponse) httpclient.execute(httpRequest);

HttpEntity entity = response.getEntity();

BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity);

InputStream instream = bufHttpEntity.getContent();

bmp = BitmapFactory.decodeStream(instream);

来源


我使用了WCF服务,当我发送图像的byte[]并使用你的方法将其转换回位图图像时,但是 BitmapFactory.decodeStream(instream) 总是为null!! - Big.Child

9

这里是一条简短的回答

val bitmap = BitmapFactory.decodeStream(inputStream)

返回一个Bitmap对象


随意使用此功能来获取本地图片,例如。 - Konstantin Konopko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接