当前位置: 首页 > 面试题库 >

旋转图像对象

马祺
2023-03-14
问题内容

我有一个方法getImage()需要旋转Image,将其存储在新变量中,然后返回new
Image。这是我的尝试,图像似乎为空或什么。它只是不显示在屏幕上:

public Image getImage() {
    buffImage.createGraphics().rotate(direction);
    return buffImage;
}

当我取出buffImage.createGraphics().rotate(direction);图像时,在屏幕上绘制的图像就很好,没有问题,但是当然没有旋转。


问题答案:

因此,基于此答案中的示例,您应该能够设计一种旋转方法,该方法可以将源图像旋转给定的度数,例如…

  // Make sure you actually load some image and assign it to this
  // variable, otherwise you will have a NullPointerException to 
  // deal with
  private BufferedImage source;

  public Image rotateBy(double degrees) {

    // The size of the original image
    int w = source.getWidth();
    int h = source.getHeight();
    // The angel of the rotation in radians
    double rads = Math.toRadians(degrees);
    // Some nice math which demonstrates I have no idea what I'm talking about
    // Okay, this calculates the amount of space the image will need in
    // order not be clipped when it's rotated
    double sin = Math.abs(Math.sin(rads));
    double cos = Math.abs(Math.cos(rads));
    int newWidth = (int) Math.floor(w * cos + h * sin);
    int newHeight = (int) Math.floor(h * cos + w * sin);

    // A new image, into which the original can be painted
    BufferedImage rotated = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2d = rotated.createGraphics();
    // The transformation which will be used to actually rotate the image
    // The translation, actually makes sure that the image is positioned onto
    // the viewable area of the image
    AffineTransform at = new AffineTransform();
    at.translate((newWidth - w) / 2, (newHeight - h) / 2);

    // And we rotate about the center of the image...
    int x = w / 2;
    int y = h / 2;
    at.rotate(rads, x, y);
    g2d.setTransform(at);
    // And we paint the original image onto the new image
    g2d.drawImage(source, 0, 0, null);
    g2d.dispose();

    return rotated;
  }


 类似资料:
  • 我有一个方法,它需要旋转,将其存储在一个新变量中,然后返回新的。这是我的尝试,图像似乎是空的什么的。它只是不显示在屏幕上: 当我取出时,图像在屏幕上绘制得很好,没有任何问题,但当然没有旋转。

  • 问题内容: 我需要能够单独旋转图像(在Java中)。到目前为止,我发现的唯一东西是g2d.drawImage(image,affinetransform,ImageObserver)。不幸的是,我需要在特定点绘制图像,并且没有一种方法带有参数1.分别旋转图像和2.允许我设置x和y。任何帮助表示赞赏 问题答案: 这就是你可以做到的。这段代码假设存在一个名为“ image”的缓冲图像(如你的评论所说)

  • 本节,我们通过平移和旋转画布上下文来旋转图像,然后在变换后的上下文中绘制图像。 图4-11 旋转图像 绘制步骤 按照以下步骤,来旋转图像: 1. 定义画布上下文: window.onload = function(){ var canvas  = document.getElementById("myCanvas"); var context = canvas.getContext("2

  • 我有一个图像组件,我想在其中旋转源: 我从代码中设置了ImageTarget的源代码。 在转换(RenderTransformorMorigin和RotateTransform)之前,我的窗口是这样的: 但在旋转之后: 所以,正如你所看到的,宽度和高度都发生了变化。 所以我的问题是: 为什么大小发生了变化? 如何将旋转后的图像对准左上角(与之前相同)? 谢谢 编辑:大小没有改变,我用不同的大小拍摄

  • 问题内容: 我想找出悬停时如何制作 旋转或旋转的图像 。我想知道如何在以下代码上使用 CSS 模仿该功能: 问题答案: 您可以将CSS3过渡与一起使用,以 在悬停时旋转图像 。 旋转图像:

  • 问题内容: 我有一张Pan Card的图像,当我尝试将其旋转45度并保存时,会得到裁剪的图像。旋转图像的代码是: 问题答案: 使用AffineTransform看一下这个例子: http://www.billthelizard.com/2008/07/rotate-image-in- java.html 有一些代码可以加载图像,这就是核心: