gpt4 book ai didi

java - Java中按多边形区域裁剪图像

转载 作者:行者123 更新时间:2023-11-30 02:34:08 25 4
gpt4 key购买 nike

通过使用 Canvas 和 JS,我可以绘制这样的形状并获得每个点的 x,y : enter image description here

该区域可以选择4个以上的点,看这个link有一个想法。

我需要使用这些点保存并裁剪所选区域的图像。我不能使用 BufferedImage,因为它只是矩形。我可以使用java中的哪个库?

最佳答案

好的,那么从...开始

Your original image

我用过...

BufferedImage source = ImageIO.read(new File("Example.jpg"));
GeneralPath clip = new GeneralPath();
clip.moveTo(65, 123);
clip.lineTo(241, 178);
clip.lineTo(268, 405);
clip.lineTo(145, 512);
clip.closePath();

Rectangle bounds = clip.getBounds();
BufferedImage img = new BufferedImage(bounds.width, bounds.height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = img.createGraphics();
clip.transform(AffineTransform.getTranslateInstance(-65, -123));
g2d.setClip(clip);
g2d.translate(-65, -123);
g2d.drawImage(source, 0, 0, null);
g2d.dispose();

ImageIO.write(img, "png", new File("Clipped.png"));

生成...

Clipped

现在,图像是矩形的,这就是它的工作方式

现在,setClip相当粗糙,不受任何RenderingHints的影响,您可以使用“软剪辑”来代替,这更复杂,但会生成更好的结果。请参阅this examplethis exmaple了解更多详情

关于java - Java中按多边形区域裁剪图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43541086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com