Android multipart / x-mixed-replace - 来自inputstream的解码位图返回null

时间:2014-02-17 14:03:50

标签: android mjpeg

我正在读一个流但是当我尝试解码它(转换成位图)时我得到null,没有抛出任何异常。

这是我的代码:

HttpGet httpRequest = new HttpGet(URI.create(link));
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = (HttpResponse) httpclient.execute(httpRequest);
HttpEntity entity = response.getEntity();
BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity);

Bitmap bitmap = BitmapFactory.decodeStream(bufHttpEntity.getContent());

我从InpuStream获得的bufHttpEntity.getContent()不为空,它有38 KB的数据。 我所知道的流服务器的标题是内容类型:multipart/x-mixed-replace;boundary=<boundary-name>

如果我在浏览器中打开链接,它正在工作,我可以看到图像,但是当我尝试将其转换为位图时,我将变为空。

1 个答案:

答案 0 :(得分:0)

查看BitmapFactory.decodeStream()的文档:

  

解码后的位图,如果无法解码图像数据,则为null。

我猜这就是造成这个问题的原因。 multipart表示内容可以包含多个文件,由边界和单个标题分隔。即使只有一个文件,它也会被标题框起,并在开头和结尾都有边框。老实说,我不知道multipart/x-mixed-replace;boundary=<boundary-name>的含义是什么。

HttpEntity不会删除边界,因此无法解码位图。

尝试将内容保存到文件,并在HEX查看器中查看。然后,您将知道如何“转换”接收的数据,以便解码位图。