Redimensiona a imagem JPEG no sistema de arquivos

9

Existe uma maneira de redimensionar um arquivo de imagem JPEG (do sistema de arquivos para o sistema de arquivos) sem remover metadados (como ImageMagicks convert in.jpg -resize 50% out.jpg )?

A única maneira que encontrei para redimensionar os arquivos .jpg que encontrei é BitmapFactory.decodeStream e Bitmap.compress , o que parece ser um pouco sobrecarregado se eu manualmente precisar transferir os metadados da imagem.

    
por Simon Warta 21.11.2016 в 21:52
fonte

1 resposta

2

Pode ser possível ler os metadados com android.media.ExifInterface , compactar o imagem via Bitmap.compress e, em seguida, salve os metadados de volta:

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

Eu não testei, mas veja o código de origem do ExifInterface , pode funcionar. Se você não quer confiar nos detalhes da implementação, você pode, é claro, percorrer todos os atributos e copiá-los.

Outra solução seria usar a biblioteca Android Exif Extended . É um pequeno projeto para ler e gravar dados exif.     
por CommonGuy 29.11.2016 / 10:54
fonte