我正在构建一个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平台上这样做。
有没有办法忽略那些错误的像素?也许使用选项参数?
任何帮助表示赞赏
罗曼
答案 0 :(得分:5)
这是Android未来版本中修复的已知错误。您可以通过首先将InputStream的内容复制到byte []数组中然后解码字节数组本身来解决它。
答案 1 :(得分:1)
尝试这个..它对我有用。希望它有所帮助。
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(n-m);
if (_m == 0L) break;
m += _m;
}
return m;
}
}