我正在裁剪(默认)相机应用程序返回的图像,但结果是一个更大的文件(约 4 倍大)。
Bitmap bitmapOrg = BitmapFactory.decodeFile(OrigImagePath);
int width = bitmapOrg.getWidth();
int height = bitmapOrg.getHeight();
int shortLength = (width <= height) ? width : height;
// square proportions
int xOffset = (width - shortLength) / 2;
int yOffset = (height - shortLength) / 2;
Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, xOffset, yOffset, shortLength, shortLength);
// save
File f = new File(Util.getDir(OrigImagePath) + File.separator + "thumbnail.jpg");
try {
FileOutputStream out = new FileOutputStream(f);
resizedBitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
我刚刚发现了文件大小差异。难怪我得到OutOfMemoryErrors
. 我知道我可以使用,BitmapFactory.Options inSampleSize
但我真的只想在不丢失细节的情况下裁剪原始图像。很明显,我在这里缺少一些东西。