usar una studio seleccionar para manipular imagenes imagen glide galeria desde como codigo cargar android picasso downloading

una - seleccionar imagen de galeria android studio



Descargar y guardar imágenes usando Picasso (3)

Estoy tratando de mostrar mis noticias en un ListView personalizado. Cada noticia está incluida de algunas imágenes y quiero

1. descargar imágenes del servidor

2.save en almacenamiento local

3.save ruta de las imágenes en SQLite

4. Muestre imágenes en ListView usando mi adaptador personalizado.

Solo tengo problemas con los pasos 1 y 2 . Puedo obtener noticias del servidor y mostrarlas en mi ListView

y muestre imágenes de la memoria caché agregando el siguiente código en mi adaptador:

Picasso.with(context).load(image[position]).into(iv);

Al usar Picasso.with(context).load(image[position]).into(target) , solo puedo guardar una

Imagen en almacenaje.

Por favor sugiéreme tu idea ...

ACTUALIZACIÓN : cuando uso el siguiente código, ¡solo se guarda una imagen (el último índice de mi matriz de imágenes)!

¿Cómo puedo guardar todas las imágenes en matriz con este código?

@Override protected void onPostExecute(Void result) { SaveImages(); pDialog.dismiss(); super.onPostExecute(result); } String fileName = null; public void SaveImages() { for(int i = 0; i < image.length; i++) { Picasso.with(this).load(image[i]).into(target); fileName = "image-" + i + ".jpg"; } } Target target = new Target() { @Override public void onPrepareLoad(Drawable arg0) { } @Override public void onBitmapLoaded(Bitmap bitmap, LoadedFrom arg1) { File file = new File(Environment.getExternalStorageDirectory().getPath() +"/" + fileName); try { file.createNewFile(); FileOutputStream ostream = new FileOutputStream(file); bitmap.compress(CompressFormat.JPEG, 75, ostream); ostream.close(); } catch (Exception e) { e.printStackTrace(); } } @Override public void onBitmapFailed(Drawable arg0) { } };


Aunque esta publicación es antigua, parece que la pregunta aún no ha sido respondida. Al leer su código, parece que la llamada que realiza a picasso podría ser asíncrona. Definitivamente, debe verificar que, como si fuera el caso, está iniciando tareas de image.length , cambiando el nombre de archivo en cada nueva tarea, image.length que todas las tareas se completen y guarden en el último nombre de archivo que se estableció. Para resolver esto, debe anular el constructor de destino y agregar un parámetro de nombre de archivo para que esté listo cuando finalice la tarea, en su oyente onBitmapLoaded .


Intente poner la definición de "Objetivo objetivo" antes de "Picasso.with (this) .load (imagen [i]). En (target);".

PD Aquí uso este código y guardo bien las imágenes. Gracias de cualquier manera.

Mi código:

final String fileName = mDataset.get(i).getAid() + ".jpg"; Target target = new Target() { @Override public void onPrepareLoad(Drawable arg0) { return; } @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom arg1) { try { File file = null; // judge "imgs/.nomedia"''s existance to judge whether path available if(LightCache.testFileExist(GlobalConfig.getFirstStoragePath() + "imgs" + File.separator +".nomedia") == true) file = new File(GlobalConfig.getFirstStoragePath() + "imgs" + File.separator + fileName); else file = new File(GlobalConfig.getSecondStoragePath() + "imgs" + File.separator + fileName); file.createNewFile(); FileOutputStream ostream = new FileOutputStream(file); bitmap.compress(Bitmap.CompressFormat.JPEG, 80, ostream); ostream.close(); } catch (Exception e) { e.printStackTrace(); } } @Override public void onBitmapFailed(Drawable arg0) { return; } }; Picasso.with(GlobalConfig.getContext()) .load(Wenku8API.getCoverURL(mDataset.get(i).getAid())) .into(target);


Objetivo personalizado para almacenar fotos en la galería del teléfono.

public class TargetPhoneGallery implements Target { private final WeakReference<ContentResolver> resolver; private final String name; private final String desc; public TargetPhoneGallery(ContentResolver r, String name, String desc) { this.resolver = new WeakReference<ContentResolver>(r); this.name = name; this.desc = desc; } @Override public void onPrepareLoad (Drawable arg0) { } @Override public void onBitmapLoaded (Bitmap bitmap, LoadedFrom arg1) { ContentResolver r = resolver.get(); if (r != null) { MediaStore.Images.Media.insertImage(r, bitmap, name, desc); } } @Override public void onBitmapFailed (Drawable arg0) { } } Picasso.with(context).load(image[position]).into(new TargetPhoneGallery(view.getContentResolver(), "image name", "image desc"));