gpt4 book ai didi

java - 如何在图像中创建透明形状

转载 作者:行者123 更新时间:2023-12-02 11:09:32 24 4
gpt4 key购买 nike

我现在有一个图像,我想在图像中创建一个透明形状,以便我可以在该形状中放置另一个图像。

我想要实现这样的目标

enter image description here

有没有办法在 java 或 python 中以编程方式执行此操作。如果不是,我该如何手动执行此操作。

我有linux环境和一些图像编辑器,但我什至无法手动执行此操作。

最佳答案

因此,使用以下内容:

所以,从这个开始......

Foreground

我想将其添加到其后面(但可以偷看)

Peek-a-Boo

我们需要做的第一件事是为我们想要变得透明的区域制作一个基于“alpha”的 mask 。为此,我使用了 RadialGradientPaint,因为它允许我在边缘周围产生“淡入淡出”效果。

现在,我已经完成了所有数学计算(使用简单的图像编辑器来计算),所以我知道我希望“洞”出现在哪里

BufferedImage city = ImageIO.read(new File("/Users/swhitehead/Downloads/City.jpg"));

BufferedImage mask = new BufferedImage(city.getWidth(), city.getHeight(), BufferedImage.TYPE_INT_ARGB);

Graphics2D g2d = mask.createGraphics();
Color transparent = new Color(255, 0, 0, 0);
Color fill = Color.RED;
RadialGradientPaint rgp = new RadialGradientPaint(
new Point2D.Double(955, 185),
185,
new float[]{0f, 0.75f, 1f},
new Color[]{transparent, transparent, fill});
g2d.setPaint(rgp);
g2d.fill(new Rectangle(0, 0, mask.getWidth(), mask.getHeight()));
g2d.dispose();

接下来,我们使用 AlphaComposite 在原始(城市)图像上绘制 mask ...

BufferedImage masked = new BufferedImage(city.getWidth(), city.getHeight(), BufferedImage.TYPE_INT_ARGB);
g2d = masked.createGraphics();
g2d.setColor(Color.RED);
g2d.fillRect(0, 0, masked.getWidth(), masked.getHeight());
g2d.drawImage(city, 0, 0, null);
g2d.setComposite(AlphaComposite.DstAtop);
g2d.drawImage(mask, 0, 0, null);
g2d.dispose();

这会生成类似...的内容

Masked

“白色”孔实际上是透明的,只是页面也是白色的:/

最后,我们将蒙版图像与背景图像结合起来......

BufferedImage composite = new BufferedImage(city.getWidth(), city.getHeight(), BufferedImage.TYPE_INT_ARGB);
g2d = composite.createGraphics();
g2d.drawImage(background, city.getWidth() - background.getWidth(), 0, null);
g2d.drawImage(masked, 0, 0, null);
g2d.dispose();

生产类似...的东西

He's always watching

所以,根据您的描述,我认为这就是您的意思

关于java - 如何在图像中创建透明形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50698351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com