在Java中按多边形区域裁剪图像
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Java中按多边形区域裁剪图像相关的知识,希望对你有一定的参考价值。
通过使用Canvas和JS,我可以绘制一个这样的形状,并且每个点都有x,y:
Tha区域可以选择超过4分,看看这个qazxsw poi有个主意。
我需要使用点保存并裁剪所选区域的图像。我不能使用link,因为它只是矩形。我可以使用java中的哪个lib?
好的,所以从...开始
BufferedImage
我用了...
生成......
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
和this example
以上是关于在Java中按多边形区域裁剪图像的主要内容,如果未能解决你的问题,请参考以下文章