簡體   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