Android obtener miniatura de la imagen almacenada en sdcard cuyo camino se conoce
Digamos que tengo una imagen almacenada en la ruta "/mnt/images/abc.jpg"
. ¿Cómo obtengo el mapa de bits de miniatura generado por el sistema para esta imagen. Sé cómo obtener la miniatura de una imagen de su Uri, pero no de su ruta de archivo
- Android obtener la miniatura de vídeo PATH, no Bitmap
- Cómo obtener Galley Thumbnail para la carpeta de imágenes en particular en android?
- ¿Cómo forzar a la aplicación a crear una miniatura (instantánea) para la lista de aplicaciones recientes?
- Produce una miniatura de pdf en Android
- Obtener imagen ThumbNail en Android
- Miniatura de la aplicación reciente de Android
- Get thumbnail Uri / ruta de acceso de la imagen almacenada en la tarjeta sd + android
- Android: recupera una miniatura de un video del servidor y aparece en el teléfono
- ¿Cómo cargar la miniatura con Universal Image Loader para Android?
- Cómo obtener la ruta de miniatura de vídeo y no el mapa de bits
- Cómo mostrar miniaturas de video?
- Imagen en miniatura de una imagen de recursos
- ¿Cómo obtener una miniatura para el video en mi / sdcard / Android / datos / mi carpeta / carpeta de archivos?
Puede probar 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; }
Usted puede obtener el Uri
de un archivo como este:
Uri uri = Uri.fromFile(new File("/mnt/images/abc.jpg")); Bitmap thumbnail = getPreview(uri);
Y la siguiente función le da la 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); }
Podría ser una forma alternativa como otros ya habían mencionado en su respuesta, pero la manera fácil que encontré para obtener 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);
Usted puede simplemente crear thumbnail video e imagen usando ThumnailUtil clase de java
Bitmap resized = ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(file.getPath()), width, height); public static Bitmap createVideoThumbnail (String filePath, int kind)
Añadido en el nivel de API 8 Cree una miniatura de vídeo para un vídeo. Puede devolver null si el video está dañado o el formato no es compatible.
Parámetros filePath la ruta del tipo de archivo de vídeo podría ser MINI_KIND o MICRO_KIND
Para obtener más código fuente de la clase de utilidad de miniaturas
Developer.android.com
Utilice la clase de mapa de bits de android y su método createScaledBitmap .
Método descroption:
public static Bitmap createScaledBitmap (Bitmap src, int dstWidth, int dstHeight, boolean filter)
Ejemplo de uso:
Bitmap bitmap = BitmapFactory.decodeFile(img_path); int origWidth = bitmap.getWidth(); int origHeight = bitmap.getHeight(); bitmap = Bitmap.createScaledBitmap(bitmap, origWidth / 10, origHeight / 10, false);
Disminuya el archivo de origen como desee. En mi ejemplo lo reduje 10 veces.