Universal Image Loader提供了许多加载图像的方法。
"file:///mnt/sdcard/image.png" // from SD card
"file:///mnt/sdcard/video.mp4" // from SD card (video thumbnail)
"content://media/external/images/media/13" // from content provider
"content://media/external/video/media/13" // from content provider (video thumbnail)
"assets://image.png" // from assets
"drawable://" + R.drawable.img // from drawables (non-9patch images)
但所有这些方式加载图像表单文件,我需要一种从内存加载的方法,因为我的图像已加密并存储在资源文件夹中,当我显示此图像时,我需要以下步骤。
所以它就是这样的。这可能吗?
Bitmap bitmap = decrypt(encryptedImageFile);
imageLoader.displayImage(bitmap, imageView);
目前,我正在考虑将位图保存到文件并加载文件,但这需要更多时间。
答案 0 :(得分:0)
我相信如果您的图像存储在资源目录中的图像文件夹中,那么您正在寻找以下内容,然后您就可以获得图像列表
private List<String> getImage(Context conetx) throws IOException {
AssetManager assetManager =conetx.getAssets();
String[] files = assetManager.list("image");
List<String> it=Arrays.asList(files);
return it;
}
作为注释,不是使用资产目录,而是将文件放入/ res / raw,然后您可以使用以下URI访问它
android.resource://com.your.packagename/" + R.raw.<nameoffile>
答案 1 :(得分:0)
我想你需要了解这一点。您必须知道,如果您已阅读universal-image-loader
的源代码,则在提供图像网址后将图像加载到ImageView
的顺序为:内存,SD卡(如果已设置),互联网。这意味着在您致电ImageLoader.display(url, imageview);
后,它会从Bitmap
第一个中查找memory
,如果它不存在,则会查找该文件然后,如果文件存在,则将文件转换为SDCard
,然后将Bitmap
加载到Bitmap
并将其存储在内存中。ImageView
中的图像但是如果文件不存在,它将下载url
的图像文件,然后将文件存储到SDCard
并将文件转换为Bitmap
并加载{{} 1}}进入记忆。 最重要的是,如果您对上面发布的内容感到困惑,我建议您阅读它的源代码。
因此,您无需从内存加载Bitmap
,Bitmap
将为您执行此操作。
答案 2 :(得分:0)
让我们选择自己的方案,这样我们的URI看起来就像“stream:// ...”。
然后实现ImageDownloader。我们应该使用我们的方案捕获URI并返回图像流。
public class StreamImageDownloader extends BaseImageDownloader {
private static final String SCHEME_STREAM = "stream";
private static final String STREAM_URI_PREFIX = SCHEME_STREAM + "://";
public StreamImageDownloader(Context context) {
super(context);
}
@Override
protected InputStream getStreamFromOtherSource(String imageUri, Object extra) throws IOException {
if (imageUri.startsWith(STREAM_URI_PREFIX)) {
return (InputStream) extra;
} else {
return super.getStreamFromOtherSource(imageUri, extra);
}
}
}
DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
.build();
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
.defaultDisplayImageOptions(defaultOptions)
.imageDownloader(new StreamImageDownloader(getApplicationContext()))
.build();
ImageLoader.getInstance().init(config);
ByteArrayInputStream stream = new ByteArrayInputStream(imgBytes);
String imageId = "stream://" + stream.hashCode();
DisplayImageOptions options = new DisplayImageOptions.Builder()
.extraForDownloader(stream)
.build();
ImageLoader.getInstance().displayImage(imageId, imageView, options);