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

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.

  • Miniatura de video arrayadopter es lento en scroll
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.