我正在尝试旋转名为 pic 的 BufferImage 实例,当我尝试此操作时,它会调整图像大小、倾斜和裁剪图像,请提供任何使其正常工作的建议
public void rotate(double rads){
AffineTransform tx = new AffineTransform();
tx.rotate(rads,pic.getWidth()/2,pic.getHeight()/2);
AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);
pic = op.filter(pic, null);
}
当我将其旋转 90° 时,它工作正常,所以我想知道问题是否在于图像的形状?
最佳答案
与AffineTransform
一起使用时,您可以使用如下方法对图像进行方形:
private BufferedImage getImage(String name) {
BufferedImage image;
try {
image = ImageIO.read(new File(name));
} catch (IOException ioe) {
return errorImage;
}
int w = image.getWidth();
int h = image.getHeight();
int max = Math.max(w, h);
max = (int) Math.sqrt(2 * max * max);
BufferedImage square = new BufferedImage(
max, max, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = square.createGraphics();
g2d.setRenderingHint(
RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2d.drawImage(image, (max - w) / 2, (max - h) / 2, null);
g2d.dispose();
return square;
}
关于Java 旋转 ImageBuffer 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10644231/