【问题标题】:Android Universal Image Loader URI from InputStream来自 InputStream 的 Android 通用图像加载器 URI
【发布时间】:2014-03-13 05:00:13
【问题描述】:

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

【问题讨论】:

  • 传递图片的绝对路径来显示它。

标签: android universal-image-loader


【解决方案1】:

我认为你可以做到类似于从数据库加载图像 - Can Universal image loader for android work with images from sqlite 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(config);

然后我们可以执行以下操作以显示来自 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);

【讨论】:

【解决方案2】:

可接受的路径

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);

来自文档:https://github.com/nostra13/Android-Universal-Image-Loader

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-12
    • 2013-04-12
    • 2017-04-07
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多