Cambiar el tamaño de la imagen JPEG en el sistema de archivos

¿Hay una manera de cambiar el tamaño de un archivo de imagen JPEG (desde el sistema de archivos al sistema de archivos) sin eliminar los metadatos (al igual que ImageMagicks convert in.jpg -resize 50% out.jpg )?

La única manera que encontré para cambiar el tamaño de los archivos. Jpg que encontré es BitmapFactory.decodeStream y Bitmap.compress , que parece una gran cantidad de gastos generales si necesito manualmente la transferencia de meta datos de la imagen.

Puede ser posible leer los metadatos con android.media.ExifInterface , comprimir la imagen a través de Bitmap.compress y luego guardar los metadatos de nuevo:

 String filename = "yourfile.jpg"; // this reads all meta data ExifInterface exif = new ExifInterface(filename); // read and compress file Bitmap bitmap = BitmapFactory.decodeFile(filename); FileOutputStream fos = new FileOutputStream(filename); bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fos); fos.close(); // write meta data back exif.saveAttributes(); 

No lo probé , pero mirando el código fuente de ExifInterface , puede funcionar. Si no desea confiar en los detalles de la implementación, podría por supuesto recorrer todos los atributos y copiarlos.


Otra solución sería utilizar la librería Android Exif Extended . Es un pequeño proyecto para leer y escribir datos exif.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.