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 Graphics API を使用して、何をしようとしているのかわかりません。もう一度、境界ボックスの周りではなく、目に見えるピクセルの輪郭に基づいて画像の輪郭を描く必要があります。それが私が達成しようとしていることです: