在我的应用程序中,我使用ACTION_IMAGE_CAPTURE
Intent 来拍照。当相机返回时,检查文件,如果旋转是纵向的,则旋转位图并使用以下代码保存到磁盘:
BitmapFactory.Options options = new Options();
options.inPreferredConfig = Bitmap.Config.RGB_565;
Bitmap bmp = BitmapFactory.decodeFile(f.getAbsolutePath(), options);
if (bmp != null) {
Matrix m = new Matrix();
m.postRotate(90);
Bitmap rotated = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), m,
true);
rotated = rotated.copy(Bitmap.Config.RGB_565, false); // added based on comment
f.delete();
FileOutputStream fos = new FileOutputStream(f);
rotated.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.close();
}
这可以正常工作,但文件大小是未旋转图片的两倍。我尝试将密度设置BitmapFactory.Options
为 0 并将比例设置为 false,但都没有达到预期的效果。我希望我转换的图像与我从磁盘加载的图像大小相同。我的代码中有什么东西可以防止这种情况发生吗?