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