如何使用彩色图案剪切图像?

时间:2010-05-05 11:10:45

标签: java image colors java-2d shape

我正在开发一个小程序,用颜色剪切图像。

使用此示例图像最容易解释:

black with a purple splotch of color

我想创建一个只有紫色形状的新图像,没有黑框。

有没有人有任何想法?我正在使用Java 2D,所以我认为我需要使用第一张图像的紫色区域创建一个对象“Shape”。

2 个答案:

答案 0 :(得分:5)

如果图像与您显示的图像完全相同,则可以:

  • 将图像加载到BufferedImage(使用ImageIO.read())
  • 创建一个相同大小的新BufferedImage,确保它有一个alpha图层(例如将其类型设置为BufferedImage.TYPE_4BYTE_ABGR)
  • “手动”在加载的BufferedImage中依次遍历每个像素,使用getRGB()获取像素颜色并检查它是否为黑色
  • 如果颜色为黑色,则在新图像中将相应像素设置为透明,否则从第一个图像设置为原始颜色(请参阅setRGB()方法)
  • 保存新图像(使用ImageIO.write())

有更好的方法,但是这种简单的方法很好且易于理解,并且适用于您所显示类型的图像。

答案 1 :(得分:2)

您需要使用一些填充算法来找到紫色区域的边界:

Wikipedia上有一个页面,上面有很好的伪代码和动画。

http://en.wikipedia.org/wiki/Flood_fill