我正在尝试从本地网络网址
显示文件http://192.168.1.118:1881/image.jpg
并在ImageView中立即显示它。问题是,当我为这个url打开inputStream并尝试使用BitmapFactory解码它时,我得到null Bitmap。我想这是因为我从输入流中获取此消息:libcore.net.http.UnknownLengthHttpInputStream。
该图像由服务器应用程序支持和托管,我无法修改。
非常感谢,我努力寻找解决方案,但没有什么对我有用
答案 0 :(得分:1)
将其下载到字节数组并解码字节数组:
byte[] data = read(inputStreamFromConnection);
if (data != null) {
Bitmap downloadedBitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
}
public static byte[] read(InputStream is) {
ByteArrayOutputStream baos = new ByteArrayOutputStream(8192);
try {
// Read buffer, to read a big chunk at a time.
byte[] buf = new byte[2048];
int len;
// Read until -1 is returned, i.e. stream ended.
while ((len = is.read(buf)) != -1) {
baos.write(buf, 0, len);
}
} catch (IOException e) {
Log.e("Downloader", "File could not be downloaded", e);
} finally {
try {
is.close();
} catch (IOException e) {
// Input stream could not be closed.
}
}
return baos.toByteArray();
}
答案 1 :(得分:0)
尝试下载完整图像,然后在下载完成后显示。例如,将 all 下载的字节写入数组,然后使用BitmapFactory.decodeByteArray
。或者将图像保存到临时文件,然后使用BitmapFactory.decodeFile
然后删除该文件。