0

我正在尝试显示来自本地网络 url 的文件

http://192.168.1.118:1881/image.jpg

并在 ImageView 中立即显示。问题是当我为这个 url 打开 inputStream 并尝试使用 BitmapFactory 对其进行解码时,我得到空位图。我想那是因为我从输入流中得到了这条消息:libcore.net.http.UnknownLengthHttpInputStream。

该图像由我无法修改的服务器应用程序支持和托管。

非常感谢,我已经努力寻找解决方案,但没有什么对我有用

4

2 回答 2

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();
}
于 2013-06-29T18:16:59.947 回答
0

尝试下载完整的图像,然后在下载完成后显示它。例如,将所有下载的字节写入一个数组,然后使用BitmapFactory.decodeByteArray. 或者将图像保存到临时文件,然后使用BitmapFactory.decodeFile然后删除该文件。

于 2013-06-29T15:56:49.747 回答