我正在裁剪(默认)相机应用程序返回的图像,但结果是一个较大尺寸的文件(大约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
,但我真的只想裁剪原始图像而不会丢失细节。显然我在这里缺少一些东西。
答案 0 :(得分:0)
也许你应该试试这个:
Bitmap resizedBitmap = Bitmap.createBitmap (xOffset, yOffset, Bitmap.Config.RGB_565);
而不是:
Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, xOffset, yOffset, shortLength, shortLength);
希望这有帮助!