【问题标题】:How can I cut an image using a color pattern?如何使用彩色图案剪切图像?
【发布时间】:2010-05-05 11:10:45
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java image colors java-2d shape


    【解决方案1】:

    如果图片与您展示的图片完全一样,您可以:

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

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

    【讨论】:

    • 很好的答案!最后我找到了解决方案!多亏了你!再次感谢!
    【解决方案2】:

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

    维基百科上有一个页面,上面有优秀的伪代码和动画。

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

    【讨论】:

    • 感谢您的回答!! Neil Coffey 给了我最好的解决方案,不过还是谢谢!
    猜你喜欢
    • 1970-01-01
    • 2022-10-15
    • 2021-04-01
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 2012-05-21
    相关资源
    最近更新 更多