android thumbnails

Android obtiene una miniatura de la imagen almacenada en una tarjeta SD cuya ruta se conoce



thumbnails (5)

Digamos que tengo un almacén de imágenes en la ruta "/mnt/images/abc.jpg" . ¿Cómo obtengo el mapa de bits en 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


Podría ser una forma alternativa como otras ya habían mencionado en su respuesta, pero la forma fácil que encontré para obtener una miniatura es usar 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);


Puedes obtener el Uri desde un archivo como este:

Uri uri = Uri.fromFile(new File("/mnt/images/abc.jpg")); Bitmap thumbnail = getPreview(uri);

Y la siguiente function te 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); }


Puedes 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; }


Simplemente puede crear un video en miniatura e imagen usando la clase de java ThumnailUtil

Bitmap resized = ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(file.getPath()), width, height); public static Bitmap createVideoThumbnail (String filePath, int kind)

Agregado en API nivel 8 Crea una miniatura de video para un video. Puede devolver nulo si el video está dañado o el formato no es compatible.

Parámetros filePath la ruta del tipo de archivo de video podría ser MINI_KIND o MICRO_KIND

Para más código fuente de la clase Thumbnail Util

Developer.android.com


Utilice la clase de mapa de bits de Android y su método createScaledBitmap .

Descripción del método:

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);

Disminuye el archivo fuente como quieras. En mi ejemplo lo reduje 10 veces.