可以从源码数据库图像的Android作业通用映像加载器?(Can Universal image l

2019-09-01 05:01发布

我想我的图片存储在SQLite数据库中的blob-S,也许它们加密。 是否有可能使用Android系统的通用 - 图像 - 装载机图片来自SQLite数据库?

Answer 1:

UIL不支持从SQLite的DB图像的开箱即用。 但是你可以自己添加这种支持,你只需要拿出新的方案/协议的名称(例如,DB://),实现自己的ImageDownloader并将其设置为配置。

例如:

让我们选择自己的方案db所以我们的URI看起来像“DB:// ...”。

然后实现ImageDownloader 。 我们应该抓住的URI与我们的方案,对其进行分析,发现在DB所需要的数据,并创建InputStream它(它可以是ByteArrayInputStream )。

public class SqliteImageDownloader extends BaseImageDownloader {

    private static final String SCHEME_DB = "db";
    private static final String DB_URI_PREFIX = SCHEME_DB + "://";

    public SqliteImageDownloader(Context context) {
        super(context);
    }

    @Override
    protected InputStream getStreamFromOtherSource(String imageUri, Object extra) throws IOException {
        if (imageUri.startsWith(DB_URI_PREFIX)) {
            String path = imageUri.substring(DB_URI_PREFIX.length());

            // Your logic to retreive needed data from DB
            byte[] imageData = ...;

            return new ByteArrayInputStream(imageData);
        } else {
            return super.getStreamFromOtherSource(imageUri, extra);
        }
    }
}

然后,我们设置这个ImageLoader来配置:

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
        ...
        .imageDownloader(new SqliteImageDownloader(context))
        .build();

ImageLoader.getInstance().init(config);

然后我们可以做以下从DB显示图像:

imageLoader.displayImage("db://mytable/13", imageView);


文章来源: Can Universal image loader for android work with images from sqlite db?