Может ли универсальный загрузчик изображений для android работать с изображениями из sqlite db?

Я хотел бы сохранить мои изображения в sqlite db, в blob-s и, возможно, зашифровать их. Можно ли использовать Android-Universal-Image-Loader с изображениями из базы данных sqlite?

Solutions Collecting From Web of "Может ли универсальный загрузчик изображений для android работать с изображениями из sqlite db?"

UIL не поддерживает изображения из SQLite DB из коробки. Но вы можете добавить эту поддержку самостоятельно, вам просто нужно придумать новое имя схемы / протокола (например, db: // ), реализовать собственный ImageDownloader и настроить его на конфигурацию.

Например:

Позволяет выбрать собственную схему db чтобы наши URI выглядели как «db: // …» .

Затем выполните ImageDownloader . Мы должны уловить URI с помощью нашей схемы, проанализировать ее, найти необходимые данные в БД и создать 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); 

И тогда мы можем сделать следующее, чтобы отобразить изображение из БД:

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