繁体   English   中英

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

[英]Crop image by polygon area in Java

通过使用 Canvas 和 JS,我可以绘制这样的形状并拥有每个点的 x,y : 在此处输入图像描述

Tha区域可以选择超过4个点,看看这个链接有一个想法。

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

好吧,那么从...开始

你的原图

我用了...

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

生成...

剪裁

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

现在, setClip相当粗糙,不受任何RenderingHints影响,您可以改用“软剪辑”,这涉及更多,但会产生更好的结果。 有关更多详细信息,请参阅此示例示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM