URI del cargador de imágenes universal de Android de InputStream

quiero preguntar acerca de UIL que la entrada de URI de InputStream. Porque mi fuente de imagen es ZIP y luego debo extraerla para mostrar esa imagen. Debido a que la imagen es demasiado grande, debo usar la biblioteca UIL, alguien sabe cómo insertar UIL desde InputStream.

preguntado el 14 de febrero de 14 a las 01:02

Pase la ruta absoluta de la imagen para mostrarla. -

2 Respuestas

Creo que puedes hacerlo de manera similar a cargar imágenes desde DB: ¿Puede el cargador de imágenes universal para Android funcionar con imágenes de sqlite db?

Elijamos nuestro propio esquema para que nuestros URI se vean como "arroyo://...".

Luego implementa ImageDownloader. Deberíamos capturar los URI con nuestro esquema y devolver el flujo de imágenes.

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

Luego configuramos este `ImageDownloader en configuración:

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

ImageLoader.getInstance().init(config);

Y luego podemos hacer lo siguiente para mostrar la imagen de 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);

contestado el 23 de mayo de 17 a las 12:05

Hola @NOSTRA, implementando tu respuesta me enfrenté a este problema (stackoverflow.com/questions/39654279/…). ¿Tienes alguna idea sobre esto? - Sudhir

Caminos aceptables

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)

Luego muestra la imagen

imageLoader.displayImage(imageUri, imageView);

de la documentación: https://github.com/nostra13/Android-Universal-Image-Loader

Respondido 14 Feb 14, 01:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.