0

ローカル ネットワークの URL からファイルを表示しようとしています

http://192.168.1.118:1881/image.jpg

ImageViewにすぐに表示します。問題は、この URL の inputStream を開いて BitmapFactory でデコードしようとすると、null Bitmap が返されることです。これは、入力ストリーム 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 に答える