当某些字节错误时,BitmapFactory.decodeStream(inputStream)始终返回null

我正在构建一个Android应用程序,我目前无法从URL中检索位图。 这是我正在使用的代码:

public static Bitmap bmpFromURL(URL imageURL){ Bitmap result = null; try { HttpURLConnection connection = (HttpURLConnection)imageURL .openConnection(); connection.setDoInput(true); connection.connect(); InputStream input = connection.getInputStream(); result = BitmapFactory.decodeStream(input); } catch (IOException e) { e.printStackTrace(); } return result; } 

当图片写入时,一切正常,但是当某些字节错误时,结果为空。 我认为这基本上是可以预期的,因为它是在BitmapFactory.decodeStream的文档中写的:

如果输入流为空,或者不能用于解码位图,则该函数返回null。 流的位置将是读取编码数据后的位置。

问题是,我的错误图片很好地解释了我的网络浏览器,我可以在iPhone平台上这样做。

有没有办法忽略那些错误的像素? 也许有选项参数?

任何帮助赞赏

罗曼

这是Android未来版本中修复的已知错误。 您可以通过首先将InputStream的内容复制到byte []数组中然后解码字节数组本身来解决它。

试试这个..它对我有用。 希望能帮助到你。

 result = BitmapFactory.decodeStream(new PatchInputStream(input)); public class PatchInputStream extends FilterInputStream { public PatchInputStream(InputStream input) { super(input); } public long skip(long n) throws IOException { long m = 0L; while (m < n) { long _m = in.skip(nm); if (_m == 0L) break; m += _m; } return m; } }