java - 绘制图像的形状

标签 java image swing

在 Java swing 中,有什么方法可以只绘制图像的形状,而不是图像本身?如果可以,我该怎么做?

我添加了一张图片来向您展示我的意思: Click here .

我的图像将由单色形状和透明背景组成。我的意图是能够改变图像的颜色。

最佳答案

ImageFilter 正是您要寻找的。可以使用 GrayFilter。

class ShapeFilter extends RGBImageFilter {
    public RedBlueSwapFilter() {
        // The filter's operation does not depend on the
        // pixel's location, so IndexColorModels can be
        // filtered directly.
        canFilterIndexColorModel = true;
    }

    public int filterRGB(int x, int y, int rgb) {
        return (rgb & 0x00_ff_ff_ff) == 0x00_ff_ff_ff // White
               || rgb & 0xff_00_00_00) == 0x00_00_00) // or transparent
               ? rgb : 0xff_ff_00_00; // Red opaque
    }
}

在带有 createImage 的组件 (JComponent) 中使用:

Image img = ImageIO.readImage(...);
ImageFilter filter = new ShapeFilter();
ImageProducer producer = new FilteredImageSource(img.getSource(), filter);
Image img2 = createImage(producer);

关于java - 绘制图像的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46660590/

相关文章:

java - SimpleDateFormat 添加 7 小时?

python - 增强人工图像,使其看起来像真实图像以用于 TF 对象检测

java - 由于变量未初始化,将图像添加到 JPanel 时出错

javascript - 自动更改图像

image - 将 RGBA 颜色转换为 RGB

java - 是否可以调整 Jlabel 的大小?

java - 有没有办法从 JPanel 对象的类外部进行绘制?

java - SQL中如何获取记录删除日期?

java - 如何从 jsonarray 检查特定的 json 数组参数值

java - 在哪里可以设置spark.eventLog.enabled?