调整文件系统中的JPEG图像大小

Sim*_*rta 9 android jpeg image-resizing

有没有办法调整JPEG图像文件(从文件系统到文件系统)而不删除元数据(就像ImageMagicks 一样convert in.jpg -resize 50% out.jpg)?

我发现我调整发现.jpg文件的唯一方法是BitmapFactory.decodeStreamBitmap.compress,它看起来像一个很大的开销,如果我需要手动传输图像元数据.

Com*_*Guy 3

可以使用android.media.ExifInterface读取元数据,通过压缩图像Bitmap.compress,然后将元数据保存回来:

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();
Run Code Online (Sandbox Code Playgroud)

我没有测试它,但查看ExifInterface 的源代码,它可能有效。如果您不想依赖实现细节,您当然可以循环所有属性并复制它们。


另一种解决方案是使用Android Exif 扩展库。这是一个读写exif数据的小项目。