我想在 Java 中对图像应用笔画(轮廓)。在阅读了这个和这个之后,看起来 Java2D API 只将笔划应用于形状?当然,我可以进行位图填充,然后对该形状应用笔触,但我想知道是否可以直接在给定的位图上应用它。
更新:我设法应用了一个描边位,它勾勒出整个图像。我的图像具有 PNG 透明度。如何仅在图像的可见像素周围应用描边?
public static void main(String[] args) {
try {
// TODO code application logic here
URL u = GraphicsDemo.class.getResource("Capture222.png");
BufferedImage img = ImageIO.read(new File(u.getPath()));
System.out.print("loaded");
Graphics2D g = img.createGraphics();
Rectangle2D tr = new Rectangle2D.Double(0, 0,
img.getWidth(), img.getHeight());
// Create the TexturePaint.
TexturePaint tp = new TexturePaint(img, tr);
g.setStroke(new BasicStroke(20));
g.setPaint(Color.ORANGE);
// g.fill(tr);
g.draw(tr);
ImageIO.write(img, "PNG", new File("myeditedimage.png"));
g.dispose();
} catch (IOException ex) {
Logger.getLogger(GraphicsDemo.class.getName()).log(Level.SEVERE, null, ex);
}
}
更新 1:我不确定使用 Java 图形 API 是否可以尝试做。再一次。我需要根据可见像素轮廓而不是围绕它的边界框来勾勒图像。这就是我想要实现的目标: