通过使用Canvas和JS,我可以绘制出像这样的形状,并获得每个点的x,y坐标:
可以通过选择多于4个点来选择区域,请查看此链接以了解更多信息。
我需要使用这些点保存和裁剪所选区域的图像。我不能使用
![enter image description here](https://istack.dev59.com/Vl0V2.webp)
我需要使用这些点保存和裁剪所选区域的图像。我不能使用
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
的影响,您可以改用“软剪辑”,这更加复杂,但生成更好的结果。有关更多详细信息,请参见this example和this exmaple。getBounds
函数,但是您可能需要了解 Rectangle#getMinX/Y
和 Rectangle#getMaxX/Y
。 - undefined