0

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

4

1 回答 1

0

也许你应该试试这个:

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

而不是这个:

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

希望这有帮助!

于 2013-10-09T10:17:05.613 回答