倾斜缓冲图像 java

Skew Buffered Image java

我有一张图片,我想根据边角进行裁剪。 例如

我只想切数独谜题。我有角 (x1, y1), (x2, y2), (x3, y3), (x4, y4).

试过这个:

javaxt.io.Image image = new javaxt.io.Image(bufferedImage);
    image.setCorners((float) pointTopLeft.getX(), (float) pointTopLeft.getY(),              //UL
            (float) pointTopRight.getX(), (float) pointTopRight.getY(),                     //UR
            (float) pointBottomRight.getX(), (float) pointBottomRight.getY(),               //LR
            (float) pointBottomLeft.getX(), (float) pointBottomLeft.getY());                //LL

但结果 returns 是这样的(这不是我想要的):

您应该使用方法 image.getSubImage(x1,y1,x2,y2) 以便您可以裁剪。在此之后,您可以将其倾斜到合适的数量。

您可以先通过移动底角和右上角来倾斜图像 - 这会产生更矩形的形状。然后你可以裁剪图像。

我试过这个:

    Image image = new javaxt.io.Image(bufferedImage);

    // skew image
    image.setCorners(
            // keep the upper left corner as it is
            0,0, // UL

            // push the upper right corner more to the bottom
            image.getWidth(),20, // UR

            // push the lower right corner more to the left
            image.getWidth()-45,image.getHeight(), // LR

            // push the lower left corner more to the right
            55,image.getHeight()); // LL

    // crop image
    image.crop(80, 105, image.getWidth()-150, image.getHeight()-105);

结果是这样的:

希望对您有所帮助。