将输入流转换为位图

Posted

技术标签:

【中文标题】将输入流转换为位图【英文标题】:Converting input stream into bitmap 【发布时间】:2011-09-30 12:49:09 【问题描述】:

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

任何提示如何解决此问题或我应该在哪里继续调试?

平台:android(蜂窝)

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

inputStream = conn.getInputStream();

bufferedInputStream = new BufferedInputStream(inputStream);

bmp = BitmapFactory.decodeStream(bufferedInputStream);

【问题讨论】:

是否有任何日志错误无法提供帮助? 【参考方案1】:

感谢@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);

Source

【讨论】:

我使用 WCF 服务,当我发送图像的字节 [] 并使用您的方法转换回位图图像时,但 BitmapFactory.decodeStream(instream) 始终为空!!【参考方案2】:

这里是单行答案

val bitmap = BitmapFactory.decodeStream(inputStream)

返回Bitmap

【讨论】:

例如,随意使用它来获取本地图像

以上是关于将输入流转换为位图的主要内容,如果未能解决你的问题,请参考以下文章

C#:将位图图像流转换为 avi 文件

如何将对象转换为输入流

将输入流转换为文件android

将输入流转换为 JSONArrary 时出现空异常

在 C++ 中发送屏幕截图流

Java题目:编写程序,将一个字符串转为字节数组输入流。转换为大写字母输出。