¿Cómo puedo guardar imágenes en la tarjeta SD que recupero de la URL de la imagen?¿Cómo transfiero una imagen de su URL a la tarjeta SD?
Respuesta
Primero debe asegurarse de que su aplicación tenga permiso para escribir en la tarjeta SD. Para hacer esto, debe agregar el permiso de usos escribir el almacenamiento externo en el archivo de manifiesto de la aplicación. Ver Setting Android Permissions
A continuación, puede usted puede descargar el URL de un archivo en la tarjeta sd. Una forma sencilla es:
URL url = new URL ("file://some/path/anImage.png");
InputStream input = url.openStream();
try {
//The sdcard directory e.g. '/sdcard' can be used directly, or
//more safely abstracted with getExternalStorageDirectory()
File storagePath = Environment.getExternalStorageDirectory();
OutputStream output = new FileOutputStream (new File(storagePath,"myImage.png"));
try {
byte[] buffer = new byte[aReasonableSize];
int bytesRead = 0;
while ((bytesRead = input.read(buffer, 0, buffer.length)) >= 0) {
output.write(buffer, 0, bytesRead);
}
} finally {
output.close();
}
} finally {
input.close();
}
EDIT: permiso Poner en el manifiesto
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
@Paresh: Gracias, he actualizado el código para usar 'getExternalStorageDirectory()'. ¿Sabes si devuelve una barra final? p.ej. '/ sdcard' o'/sdcard/' – Akusete
Su pregunta es discutible porque' Environment.getExternalStorageDirectory() 'no devuelve un' String' y, por lo tanto, su código no se compila. Corregí tu código por ti. –
¿Qué es un tamaño razonable? –
Un excelente ejemplo se puede encontrar en el latest post en el blog de desarrolladores de Android:
static Bitmap downloadBitmap(String url) {
final AndroidHttpClient client = AndroidHttpClient.newInstance("Android");
final HttpGet getRequest = new HttpGet(url);
try {
HttpResponse response = client.execute(getRequest);
final int statusCode = response.getStatusLine().getStatusCode();
if (statusCode != HttpStatus.SC_OK) {
Log.w("ImageDownloader", "Error " + statusCode +
" while retrieving bitmap from " + url);
return null;
}
final HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream inputStream = null;
try {
inputStream = entity.getContent();
final Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
return bitmap;
} finally {
if (inputStream != null) {
inputStream.close();
}
entity.consumeContent();
}
}
} catch (Exception e) {
// Could provide a more explicit error message for IOException or
// IllegalStateException
getRequest.abort();
Log.w("ImageDownloader", "Error while retrieving bitmap from " + url,
e.toString());
} finally {
if (client != null) {
client.close();
}
}
return null;
}
Esto no describe cómo guardar la imagen en la tarjeta SD, solo cómo descargar la imagen en la memoria. –
¿Cómo obtuvo esta respuesta 9 votos ascendentes?! ... –
- 1. Android Guardar imagen en la tarjeta SD
- 2. Android: eliminar una imagen de la tarjeta SD
- 3. Escribiendo a la tarjeta SD
- 4. android leyendo una imagen de la tarjeta SD
- 5. Android: muestra la imagen de la tarjeta SD
- 6. Android guardar Bitmap a tarjeta SD
- 7. Mover aplicaciones a la tarjeta SD
- 8. Eliminar una carpeta en la tarjeta SD
- 9. Servicio de reinicio para la aplicación en la tarjeta SD Cuando se repone la tarjeta SD
- 10. Cargando dibujable desde la tarjeta SD
- 11. Rendimiento de escritura de la tarjeta SD
- 12. android obtener una miniatura de la imagen almacenada en una tarjeta SD cuya ruta se conoce
- 13. Cómo reproducir vídeos desde la tarjeta SD
- 14. Cómo guardar archivos en la tarjeta SD
- 15. No se puede mover una aplicación a la tarjeta SD
- 16. Cómo guardar la imagen en la tarjeta SD en el botón Haga clic en android
- 17. imágenes en la tarjeta SD de acceso
- 18. ¿Cómo eliminar un archivo de la tarjeta SD?
- 19. Android: obtener una miniatura de la imagen en la tarjeta SD, dado Uri de la imagen original
- 20. Escribiendo un archivo en una tarjeta SD
- 21. ¿Cómo mostrar archivos en la tarjeta SD en un ListView?
- 22. Tienda de imagen de mapa de bits a la tarjeta SD en Android
- 23. Permiso para escribir en la tarjeta SD
- 24. Cómo crear una carpeta privada en una tarjeta SD
- 25. ¿Cómo puedo descargar un archivo de video a la tarjeta SD?
- 26. Capture la imagen de la cámara frontal y guárdela en la tarjeta SD sin vista previa
- 27. ¿Es posible mover el DB interno a la tarjeta SD?
- 28. ¿Cómo leer el número de ID de la tarjeta SD?
- 29. ANDROID: ¿Cómo descargo un archivo de video a la tarjeta SD?
- 30. Características de la tarjeta SD Android en Samsung Galaxy
@Akusete ... debe reemplazar 'buffer.length' en output.write (buffer, 0, buffer.length); a bytesLeer. De lo contrario, los datos de basura se agregarán al final del archivo. – shaffooo