0

AndroidアプリのモノドロイドでAndroidユニバーサルイメージローダーを使用しています。

いつかSDカードにいくつかの画像を保存する必要があります。この場合、ストリームで画像をダウンロードしてから、SD カードに保存する必要があります。

このライブラリを使用してストリームごとに画像をダウンロードする方法はありますか? 多くの場合、画像はライブラリにキャッシュされているためですか?

4

1 に答える 1

9

UILはSDカードに画像をキャッシュできます(DisplayImageOptionsでキャッシュを有効にします)。キャッシュ用に独自のフォルダーを定義できます(ImageLoaderConfigurationで)。

UILを使用してSDカードの画像を表示する場合は、次のようなURLを渡す必要があります。 file:///mnt/sdcard/MyFolder/my_image.png

file://つまり、プレフィックスを使用します。

UPD: SDカードに画像を保存したい場合:

    String imageUrl = "...";
    File fileForImage = new File("your_path_to_save_image");

    InputStream sourceStream;
    File cachedImage = ImageLoader.getInstance().getDiscCache().get(imageUrl);
    if (cachedImage != null && cachedImage.exists()) { // if image was cached by UIL
        sourceStream = new FileInputStream(cachedImage);
    } else { // otherwise - download image
        ImageDownloader downloader = new BaseImageDownloader(context);
        sourceStream = downloader.getStream(imageUrl, null);
    }

    if (sourceStream != null) {
        try {
            OutputStream targetStream = new FileOutputStream(fileForImage);
            try {
                IoUtils.copyStream(sourceStream, targetStream, null);
            } finally {
                targetStream.close();
            }
        } finally {
            sourceStream.close();
        }
    }
于 2012-12-15T18:22:21.977 に答える