0

複数の画像をmysqlデータベースからImageButtonにロードするAndroidアプリがあります。

imageButton.setImageBitmap(fetchBitmap("http://www...~.jpg"));

以前は png を正常に読み込むことができましたが、現在は失敗しています (これまで jpg 画像では成功しませんでした)。画像のダウンロードに使用するコードは次のとおりです。

public static Bitmap fetchBitmap(String urlstr) {
    InputStream is= null;
    Bitmap bm= null;
    try{
        HttpGet httpRequest = new HttpGet(urlstr);
        HttpClient httpclient = new DefaultHttpClient();
        HttpResponse response = (HttpResponse) httpclient.execute(httpRequest);

        HttpEntity entity = response.getEntity();
        BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity);
        is = bufHttpEntity.getContent();
        BitmapFactory.Options factoryOptions = new BitmapFactory.Options();
        bm = BitmapFactory.decodeStream(is);
    }catch ( MalformedURLException e ){
        Log.d( "RemoteImageHandler", "Invalid URL: " + urlstr );
    }catch ( IOException e ){
        Log.d( "RemoteImageHandler", "IO exception: " + e );
    }finally{
        if(is!=null)try{
            is.close();
        }catch(IOException e){}
    }
    return bm;
} 

このエラーが発生します:-

D/skia(4965): --- SkImageDecoder::Factory returned null

ここここ、および他のいくつかの解決策として提案されているように、すでにさまざまな組み合わせを試しましたが、うまくいきません。何か不足していますか?入力した Web アドレスに画像が確実に存在します。

ありがとうございました。

4

2 に答える 2

0

問題は、画像が保存されているディレクトリに「実行」権限がないため、画像をダウンロードできないことでした。権限が追加されるとすぐに、アプリはスムーズに動作します:)

于 2012-07-29T13:30:03.550 に答える
0

以下のコードを使用して画像をダウンロードし、ビットマップに保存すると、役立つ場合があります。

public static Bitmap loadBitmap(String url) {
    Bitmap bitmap = null;
    InputStream in = null;
    BufferedOutputStream out = null;

    try {
        in = new BufferedInputStream(new URL(url).openStream(), IO_BUFFER_SIZE);

        final ByteArrayOutputStream dataStream = new ByteArrayOutputStream();
        out = new BufferedOutputStream(dataStream, IO_BUFFER_SIZE);
        out.flush();

        final byte[] data = dataStream.toByteArray();
        BitmapFactory.Options options = new BitmapFactory.Options();

        bitmap = BitmapFactory.decodeByteArray(data, 0, data.length,options);
    } catch (IOException e) {
        Log.e(TAG, "Could not load Bitmap from: " + url);
    } finally {
        closeStream(in);
        closeStream(out);
    }

    return bitmap;
}
于 2012-07-27T06:00:44.017 に答える