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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Java中按多边形区域裁剪图像相关的知识,希望对你有一定的参考价值。

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

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

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

答案

好的,所以从...开始

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

以上是关于在Java中按多边形区域裁剪图像的主要内容,如果未能解决你的问题,请参考以下文章

裁剪图像包含在 4 边(非矩形)多边形中

如何在c#中用多边形裁剪图像

使用 php 从图像中裁剪多边形

如何在winforms c#中从图片框中裁剪和保存非矩形但多边形区域[重复]

如何用ENVI和ARCGIS切割出图像的制定区域

Java 图像裁剪不准确