Skew Bufferedimage java

时间:2015-02-01 17:47:06

标签: java image-processing bufferedimage

我有一个想要在角落里裁剪的图像。 例如

the normal image

我想剪掉数独谜题。我有角(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

但它返回的结果是这(这不是我想要的): enter image description here

2 个答案:

答案 0 :(得分:2)

您可以首先通过移动底角和右上角来扭曲图像 - 这将导致更加矩形的形状。然后你可以裁剪图像。

我试过这个:

    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);

结果如下:

result image

希望这有帮助。

答案 1 :(得分:0)

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