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

问题描述 投票:1回答:1

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

Tha区域可以选择超过4分,看看这个qazxsw poi有个主意。

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

java canvas crop
1个回答
2
投票

好的,所以从...开始

BufferedImage

我用了...

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的影响,你可以使用“软剪辑”,这更多涉及,但产生更好的结果。有关详细信息,请参阅RenderingHintsthis example

© www.soinside.com 2019 - 2024. All rights reserved.