我想通過使用Affinetransform.rotate(
)和AffinetransformOp.filter
以90度增量旋轉32乘64 png圖像。它適用於0,90和180度,但在270度時只顯示一半圖像。經過一番研究後,我發現這是由於filter()
處理圖像座標的方式,但我不知道如何解決這個問題。我已經嘗試過使用其他方法來旋轉圖像,但我寧願使用這個。Java AffinetransformOp過濾器()擰我的形象
用於旋轉圖像的方法:
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);
}
我也有一個屏幕截圖澄清我的問題:
編輯:我已經手動試圖通過將創建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);
我也希望爲此找到解決辦法。當我有100x50尺寸的圖像時,旋轉它,然後過濾它,結束圖像是100x100。該過程擴大了圖像邊界以繪製所有圖像,但我想知道一旦完成後是否可以重新調整這些邊界。 – 2013-08-01 15:16:11