来自BitmapFactory的损坏的图像

时间:2015-02-26 17:19:35

标签: android bitmap bitmapfactory corrupt-data

我下载图像时偶尔会出现一些灰色线条,如下图所示: Example

这往往只在糟糕的网络条件下发生。

我解码图像的代码本质上是来自UIL的修改版本:

Bitmap decodedBitmap = BitmapFactory.decodeStream(stream, null, decodingOptions);

其中stream只是远程文件的InputStream

现在我在Google Play音乐应用上看到了这种行为,这让我想知道它是否是BitmapFactory的一个问题。 到目前为止,我提出的唯一解决方案是进行校验和比较,以确保整个图像都已下载。

编辑:

HttpURLConnection conn = getConnection(path);
InputStream inputStream = conn.getInputStream()
stream = new ContentLengthInputStream(new BufferedInputStream(download, BUFFER_SIZE), conn.getContentLength())

1 个答案:

答案 0 :(得分:0)

使用以下步骤解决它:

  • 正常打开图像的InputStream
  • 将流写入ByteArrayOutputStream
  • 将ByteArrayOutputStream的长度与HttpURLConnection的Content-Length标头进行比较
  • 如果不匹配,那么您在传输过程中丢失了数据
  • 否则,您可以将ByteArrayOutputStream转换为ByteArrayInputStream,并根据需要与BitmapFactory一起使用