2

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

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

黑色带紫色斑点

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

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

4

2 回答 2

5

如果图像实际上与您展示的图像一样,您可以:

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

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

于 2010-05-05T11:21:45.843 回答
2

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

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

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

于 2010-05-05T11:20:41.733 回答