gpt4 book ai didi

Java AffinetransformOp filter() 搞砸了我的形象

转载 作者:行者123 更新时间:2023-11-30 11:34:53 25 4
gpt4 key购买 nike

我正在尝试使用 Affinetransform.rotate() 和 AffinetransformOp.filter 以 90 度为增量旋转 32 x 64 png 图像。它适用于 0、90 和 180 度,但在 270 度时只显示图像的一半。经过一些研究,我发现这是由于 filter() 处理图像坐标的方式造成的,但我不知道如何解决这个问题。我已经尝试过使用其他方法来旋转图像,但我宁愿使用这种方法。

旋转图片的方法:

public BufferedImage rotateImage(BufferedImage img, double angle) {
AffineTransform tx = new AffineTransform();
tx.rotate(angle, img.getWidth() - 16, img.getHeight() - 16);
AffineTransformOp op = new AffineTransformOp(tx,
AffineTransformOp.TYPE_BILINEAR);
return op.filter(img, null);
}

我也有一个截图来澄清我的问题: enter image description here

编辑:我尝试通过添加以下代码为 filter() 手动创建目标图像,但无济于事。

int w, h;
if (angle == Math.PI / 2 || angle == 3 * Math.PI / 2) {
w = img.getHeight();
h = img.getWidth();
} else {
w = img.getWidth();
h = img.getHeight();
}
BufferedImage dest = new BufferedImage(w, h, img.getType());
return op.filter(img, dest);

最佳答案

我觉得跟你过关有关系

tx.rotate(angle, img.getHeight() / 2 - 16, img.getHeight() - 16);

应该是什么时候

tx.rotate(angle, img.getWidth() - 16, img.getHeight() / 2 - 16);

(您两次传递了 getHeight(),我很确定它们的顺序错误)

如果这对您有所改变,请告诉我。

关于Java AffinetransformOp filter() 搞砸了我的形象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15415613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com