我想在各种不同宽度和高度的展示位置显示图像。
我正在使用 Sclar 裁剪和调整大小的方法,但我有两个问题:
- 在某些情况下,结果看起来不太好。我认为这是因为代码中的图像首先被缩放。
- 在其他情况下我得到一个例外。例如:
无效的裁剪边界:x [32]、y [-1]、宽度 [64] 和高度 [64] 都必须 >= 0
将裁剪和图像调整为某个目标宽度和高度的最佳方法是什么?
这是我目前的方法:
public static BufferedImage resizeAndCropToCenter(BufferedImage image, int width, int height) {
image = Scalr.resize(image, Scalr.Method.QUALITY, Scalr.Mode.FIT_TO_WIDTH,
width * 2, height * 2, Scalr.OP_ANTIALIAS);
int x, y;
int imageWidth = image.getWidth();
int imageHeight = image.getHeight();
if (imageWidth > imageHeight) {
x = width / 2;
y = (imageHeight - height) / 2;
} else {
x = (imageWidth - width) / 2;
y = height / 2;
}
return Scalr.crop(image, x, y, width, height);
}