AndroidアプリのモノドロイドでAndroidユニバーサルイメージローダーを使用しています。
いつかSDカードにいくつかの画像を保存する必要があります。この場合、ストリームで画像をダウンロードしてから、SD カードに保存する必要があります。
このライブラリを使用してストリームごとに画像をダウンロードする方法はありますか? 多くの場合、画像はライブラリにキャッシュされているためですか?
AndroidアプリのモノドロイドでAndroidユニバーサルイメージローダーを使用しています。
いつかSDカードにいくつかの画像を保存する必要があります。この場合、ストリームで画像をダウンロードしてから、SD カードに保存する必要があります。
このライブラリを使用してストリームごとに画像をダウンロードする方法はありますか? 多くの場合、画像はライブラリにキャッシュされているためですか?
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();
}
}