这似乎不太理想,但是如果您将字节流逐字节读取到缓冲区中,然后将字节数组传递给BitmapFactory,它将正常工作。
URL url = new URL("http://farm5.static.flickr.com/4132/5168797476_7a85deb2be_b.jpg");
URLConnection con = url.openConnection();
con.connect();
int fileLength = con.getContentLength();
InputStream is = con.getInputStream();
byte[] bytes = new byte[fileLength];
for(int i=0;i<fileLength;i++) {
bytes[i] = (byte)is.read();
}
sourceBitmap = BitmapFactory.decodeByteArray(bytes, 0, fileLength);
我尝试使用is.read(bytes,0,fileLength)一次将字节读取到缓冲区中,但是除非我在调用read之前稍等片刻,否则它无法可靠地完全填充缓冲区。android的InputStream的read方法的实现是否有缺陷,导致BitmapFactory的encodeStream方法由于数据不完整而失败?