来自InputStream的Android通用图像加载程序URI

来自InputStream的Android通用图像加载程序URI,android,universal-image-loader,Android,Universal Image Loader,我想问一下从InputStream输入的URI是哪个UIL。因为我的图像源于ZIP,然后我必须提取它来显示该图像。因为图像太大,我必须使用UIL库,任何人都知道如何从InputStream插入UIL 可接受的路径 String imageUri = "http://someurl.com/image.png"; // from Web String imageUri = "file:///mnt/sdcard/image.png"; // from SD card String imageUri

我想问一下从InputStream输入的URI是哪个UIL。因为我的图像源于ZIP,然后我必须提取它来显示该图像。因为图像太大,我必须使用UIL库,任何人都知道如何从InputStream插入UIL

可接受的路径

String imageUri = "http://someurl.com/image.png"; // from Web
String imageUri = "file:///mnt/sdcard/image.png"; // from SD card
String imageUri = "content://media/external/audio/albumart/13"; // from content provider
String imageUri = "assets://image.png"; // from assets
String imageUri = "drawable://" + R.drawable.image; // from drawables (only images, non-9patch)
然后显示图像

imageLoader.displayImage(imageUri, imageView);

从文档中:

我认为您可以执行类似于从DB加载图像的操作-

让我们选择自己的方案,以便我们的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);
        }
    }
}
然后,我们将此“ImageDownloader”设置为配置:

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
    ...
    .imageDownloader(new StreamImageDownloader(context))
    .build();
ImageLoader.getInstance().init(配置)

然后我们可以执行以下操作来显示来自DB的图像:

ImageStream is = ...; // You have image stream
// You should generate some unique string ID for this stream
// Streams for the same images should have the same string ID
String imageId = "stream://" + is.hashCode();

DisplayImageOptions options = new DisplayImageOptions.Builder()
    ...
    .extraForDownloader(is)
    .build();

imageLoader.displayImage(imageId, imageView, options);

传递图像的绝对路径以显示它。嗨@NOSTRA,实现您的答案我遇到了这个问题()。你知道这件事吗?