java - 在 BufferedImage 的选定区域应用过滤器

标签 java swing java-2d

我想在 BufferedImage 上应用一些过滤器,但不要对整个应用这些过滤器

bufferedImage,我需要在矩形,椭圆,徒手选择上应用滤镜

BufferedImage.有人知道吗?

谢谢

最佳答案

参见 Graphics.setClip (Shape 形状):

Graphics g = image.getGraphics();
g.setClip(shape);

然后您可以将滤镜应用于整个图形(图像),但它只会应用于剪裁区域。


下面的代码将生成这张图片:

Examples of clips

public static void main(String[] args) throws Exception {

    BufferedImage image = new BufferedImage(400, 400, BufferedImage.TYPE_INT_ARGB);
    Graphics2D g = (Graphics2D) image.getGraphics();

    // set "user defined" clip
    g.setClip(new Polygon(
            new int[] { 50, 100, 50 }, 
            new int[] { 50, 50, 100 },
            3));
    g.fillRect(0, 0, 400, 400);

    // set an ellipse
    g.setClip(new Ellipse2D.Double(100, 100, 200, 200));
    g.fillRect(0, 0, 400, 400);

    // set an rectangle
    g.setClip(new Rectangle(300, 300, 50, 50));
    g.fillRect(0, 0, 400, 400);

    g.dispose();
    ImageIO.write(image, "png", new File("test.png"));
}

关于java - 在 BufferedImage 的选定区域应用过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4573563/

相关文章:

Java Swing 相关字段验证

java - JTable 的非实时/非实时排序

Java AWT fillOval() 不起作用

java - 如何从Java2D生成的图形生成事件

swt - 更快: SWT or Java2D?

java - 在 Java 中将对象与字符串相互转换的公认做法?

java - 地形/山地算法未按预期工作

java - 是否可以在 libgdx 中倾斜 Actor

java - JProgressBar 多次 self 实例化

java - 是否可以将 String 变量作为参数传递给 new ImageIcon() ?