Android BitmapFactory中损坏的图像

Android BitmapFactory中损坏的图像,android,bitmap,bitmapfactory,corrupt-data,Android,Bitmap,Bitmapfactory,Corrupt Data,有时,当我下载图像时,其中一些图像会出现灰色线条,如下图所示: 这往往只发生在网络条件较差的情况下 我解码图像的代码基本上是UIL的修改版本: Bitmap decodedBitmap = BitmapFactory.decodeStream(stream, null, decodingOptions); 其中,流只是远程文件的输入流 现在我在Google Play音乐应用程序上看到了这种行为,这让我怀疑这是否是BitmapFactory的问题。 到目前为止,我提出的唯一解决方案可能是进行校

有时,当我下载图像时,其中一些图像会出现灰色线条,如下图所示:

这往往只发生在网络条件较差的情况下

我解码图像的代码基本上是UIL的修改版本:

Bitmap decodedBitmap = BitmapFactory.decodeStream(stream, null, decodingOptions);
其中,流只是远程文件的输入流

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

编辑:

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

使用以下步骤解决此问题:

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

我不认为它与BitmapFactory有关,因为它只是解码流,更像是蒸汽没有完全充满,是的,执行MD5校验和就足够了,然后您可以读取文件并获取其Uri。@Raykud我对校验和解决方案犹豫不决的唯一原因是它会增加每一个图像下载的开销。我已经发布了用于获取InputStream的代码(如果有帮助的话)