Supongamos que tengo una imagen almacenada en la ruta "/mnt/images/abc.jpg"
. ¿Cómo obtengo el mapa de bits en miniatura generado por el sistema para esta imagen? Yo sé cómo conseguir la miniatura de una imagen de su Uri, pero no de su file-pathandroid obtener una miniatura de la imagen almacenada en una tarjeta SD cuya ruta se conoce
Respuesta
se puede obtener el Uri
de un archivo de la siguiente manera:
Uri uri = Uri.fromFile(new File("/mnt/images/abc.jpg"));
Bitmap thumbnail = getPreview(uri);
Y la siguiente function que la da miniatura:
Bitmap getPreview(Uri uri) {
File image = new File(uri.getPath());
BitmapFactory.Options bounds = new BitmapFactory.Options();
bounds.inJustDecodeBounds = true;
BitmapFactory.decodeFile(image.getPath(), bounds);
if ((bounds.outWidth == -1) || (bounds.outHeight == -1))
return null;
int originalSize = (bounds.outHeight > bounds.outWidth) ? bounds.outHeight
: bounds.outWidth;
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inSampleSize = originalSize/THUMBNAIL_SIZE;
return BitmapFactory.decodeFile(image.getPath(), opts);
}
Creo que usar 'MediaStore.Images.Thumbnails.getThumbnail (getContentResolver(), Long.parseLong (_imageUri.getLastPathSegment()), tipo, nulo);' sería una mejor opción, ya que el sistema la mayoría de las veces almacena en caché el thumbnails – pankajagarwal
@frieza Estoy de acuerdo. – Caner
su método para obtener el uri no parece funcionar correctamente porque para un archivo con ruta "/ mnt/sdcard/2011-12-02 11.22.50.jpg" el uri real es ontent: // media/external/images/media/556 donde como el método Uri.fromFile (...) devuelve el archivo: ///mnt/sdcard/2011-12-02%2011.22.50.jpg – pankajagarwal
Usted puede tratar con esto:
public static Bitmap getThumbnail(ContentResolver cr, String path) throws Exception {
Cursor ca = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[] { MediaStore.MediaColumns._ID }, MediaStore.MediaColumns.DATA + "=?", new String[] {path}, null);
if (ca != null && ca.moveToFirst()) {
int id = ca.getInt(ca.getColumnIndex(MediaStore.MediaColumns._ID));
ca.close();
return MediaStore.Images.Thumbnails.getThumbnail(cr, id, MediaStore.Images.Thumbnails.MICRO_KIND, null);
}
ca.close();
return null;
}
Podría ser un maneras alternativas como otro ya había mencionado en su respuesta, pero Fácil manera que he encontrado para conseguir miniatura está utilizando ExifInterface
ExifInterface exif = new ExifInterface(pictureFile.getPath());
byte[] imageData=exif.getThumbnail();
if (imageData!=null) //it can not able to get the thumbnail for very small images , so better to check null
Bitmap thumbnail= BitmapFactory.decodeByteArray(imageData,0,imageData.length);
En algunos casos, no es trabajo. No es mejor que obtener de Image Store como en la respuesta aceptada. –
Yaa cuando BitmapFactory no puede decodificar la matriz de bytes solo entonces. – dhams
Usted puede simplemente crear miniatura de vídeo y la imagen usando la clase ThumnailUtil de java
Bitmap resized = ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(file.getPath()), width, height);
public static Bitmap createVideoThumbnail (String filePath, int kind)
Agregado en el nivel de API 8 Cree una miniatura de video para un video. Puede devolver nulo si el video está dañado o el formato no es compatible.
Parámetros rutaArchivo la ruta del archivo de vídeo tipo podría MINI_KIND o MICRO_KIND
uso androide de la clase Bitmap y su createScaledBitmap método.
método Descroption:
public static Bitmap createScaledBitmap (Bitmap src, int dstWidth, int dstHeight, boolean filter)
ejemplo del uso:
Bitmap bitmap = BitmapFactory.decodeFile(img_path);
int origWidth = bitmap.getWidth();
int origHeight = bitmap.getHeight();
bitmap = Bitmap.createScaledBitmap(bitmap, origWidth/10, origHeight/10, false);
disminución del archivo de origen como usted desee. En mi ejemplo lo reduje 10 veces.
- 1. consigo miniatura Uri/ruta de la imagen almacenada en la tarjeta SD + android versión
- 2. Android: obtener una miniatura de la imagen en la tarjeta SD, dado Uri de la imagen original
- 3. Android Guardar imagen en la tarjeta SD
- 4. Android: eliminar una imagen de la tarjeta SD
- 5. android leyendo una imagen de la tarjeta SD
- 6. Android obtiene una ruta a la imagen desde la miniatura?
- 7. ¿Cómo obtener miniatura de galera para una carpeta de imagen particular en android?
- 8. Eliminar una carpeta en la tarjeta SD
- 9. Android: muestra la imagen de la tarjeta SD
- 10. Android Cómo obtener una vista previa de una imagen, usando su ruta de archivo desde la tarjeta SD, desde mi aplicación
- 11. ¿La desinstalación de una aplicación de Android elimina la base de datos almacenada en la tarjeta SD?
- 12. cómo obtener la ruta del archivo de la tarjeta SD en Android
- 13. Obtener RGB de una imagen almacenada
- 14. Servicio de reinicio para la aplicación en la tarjeta SD Cuando se repone la tarjeta SD
- 15. No se puede mover una aplicación a la tarjeta SD
- 16. obtener transmisión recibida cuando la tarjeta SD está desmontando android
- 17. cómo obtener todas las imágenes y fotos de mi dispositivo Android no desde una tarjeta SD?
- 18. ¿Cómo puedo obtener el tamaño de una carpeta en la tarjeta SD en Android?
- 19. ¿Es posible obtener la ruta de una cookie almacenada?
- 20. Escribiendo un archivo en una tarjeta SD
- 21. Android se mueve al comportamiento de la tarjeta SD
- 22. Android guardar Bitmap a tarjeta SD
- 23. Uso de la cámara sin tarjeta SD en Android
- 24. Android: ubicación absoluta de la tarjeta SD externa
- 25. Cargando dibujable desde la tarjeta SD
- 26. ¿TODOS los dispositivos Android tienen una tarjeta SD interna?
- 27. imágenes en la tarjeta SD de acceso
- 28. Cómo guardar la imagen en la tarjeta SD en el botón Haga clic en android
- 29. Escribiendo a la tarjeta SD
- 30. Obtener el URI de una imagen almacenada en dibujable
Usted puede simplemente crear miniatura de vídeo y la imagen usando la clase de Java ThumnailUtil Bitmap redimensionado = ThumbnailUtils.extractThumbnail (BitmapFactory.decodeFile (file.getPath()), anchura, altura); –