java - 在java中旋转图像而不调整图像大小

标签 java image swing image-rotation

我写这段代码:

BufferedImage image;
BufferedImage im = image;

    @Override
    public void paint(Graphics g) {
    try {
        image = ImageIO.read(new File("jet.png"));
        Graphics2D g2 = (Graphics2D) g;
        g2.drawImage(image, 100, 100, Color.BLACK, null);
        image = rotateImage(-45);
        g2.drawImage(image, 250, 100, Color.BLACK, null);
    } catch (IOException ex) {

    }
    }

    public BufferedImage rotateImage(int degress) {

    double deg = Math.toRadians(degress);
    double xrot = image.getWidth()/2 ;
    double yrot = image.getHeight() /2;
    AffineTransform xt = AffineTransform.getRotateInstance(deg, xrot, yrot);
    AffineTransformOp op = new AffineTransformOp(xt, AffineTransformOp.TYPE_BILINEAR);
    return op.filter(image, im);

    }
}

输出是:

enter image description here

并且新的图像尺寸改变了!!!我想旋转这个图像,它的重要的新图像大小不改变

我想要一些代码来旋转图像而不调整图像大小,就像这样

enter image description here

最佳答案

显示的效果是AffineTransformOp#filter()的特点:“getBounds2D(BufferedImage) 返回的矩形坐标不一定与此方法返回的BufferedImage 坐标相同。”相反,将图像绘制到具有旋转图形上下文的 BufferedImage 中,如图所示 here .使用 RenderingHints ,例如 VALUE_ANTIALIAS_ONVALUE_INTERPOLATION_BILINEAR,根据需要。

关于java - 在java中旋转图像而不调整图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31210114/

相关文章:

Java JTable 复制行时出错

java - 使用重绘和计时器每秒旋转一条线

java - 添加包语句时找不到或加载主类

jquery - 不在 jQuery 中循环

java - 如何使用 java 仅获取 mongodb 中文档的 objectId

c# - 加载、保存然后再次加载图像会抛出 "A generic error occurred in GDI+"

html - 无论页面大小如何,将标题图像居中

java - 计算 Swing 中物体之间可能的路径(可能是无穷大)的策略?

java - Dropwizard 相当于 Spring 的 @Async

java - 从 Java 调用继承的类方法