图像裁剪中出现意外行为

时间:2013-10-09 09:46:27

标签: android

我正在裁剪(默认)相机应用程序返回的图像,但结果是一个较大尺寸的文件(大约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,但我真的只想裁剪原始图像而不会丢失细节。显然我在这里缺少一些东西。

1 个答案:

答案 0 :(得分:0)

也许你应该试试这个:

Bitmap resizedBitmap =  Bitmap.createBitmap (xOffset, yOffset, Bitmap.Config.RGB_565);

而不是:

Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, xOffset, yOffset, shortLength, shortLength);

希望这有帮助!