2014-02-14 3 views
4

Я хочу спросить о UIL, который вводит URI из InputStream. Потому что мой источник изображения из ZIP, а затем я должен извлечь его, чтобы показать это изображение. Поскольку изображение слишком велико, я должен использовать библиотеку UIL, кто-нибудь знает, как вставить UIL из InputStream.URI универсального Image Loader URI от InputStream

+0

Pass абсолютный путь к изображению, чтобы показать его. – Sharj

ответ

6

Я думаю, что вы можете сделать это, подобный загрузки изображений из БД - Can Universal image loader for android work with images from sqlite db?

Позволяет выбрать собственную схему, так что r 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() инициализации (конфигурации);.

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

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

@ Audrius KI не знаю, почему модераторы отклонили ваше редактирование :) – NOSTRA

+0

Привет @NOSTRA, Реализовав свой ответ, я столкнулся с этой проблемой (http://stackoverflow.com/questions/39654279/java-inputsream-hascode-is-different- каждый из времени, даже когда-заместитель-запрос-это-то же самое). Есть ли у вас какие-либо идеи по этому поводу? – Sudhir

1

Приемлемые пути

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

Смежные вопросы