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

时间:2016-11-21 20:52:04

标签: android jpeg image-resizing

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

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

1 个答案:

答案 0 :(得分:2)

可以使用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();

我没有测试它,但是看source code of ExifInterface,它可能有效。 如果您不想依赖实现细节,您当然可以遍历所有属性并复制它们。

<小时/> 另一种解决方案是使用Android Exif Extended库。这是一个读取和写入exif数据的小项目。