使用Java2D过滤ROI的图像

时间:2011-02-14 07:55:45

标签: java-2d bufferedimage roi

我想在用户选择的感兴趣区域应用一些过滤器[图像过滤器]。

我需要API来获取此区域的像素[多边形或手绘也是矩形]并应用

filter.any对这项工作的建议?

1 个答案:

答案 0 :(得分:0)

基本上,您需要做的是:

  1. 创建BufferedImage并将其与Graphics对象链接
  2. 设置剪裁区域
  3. 绘制此图形对象
  4. 在BufferedImage对象上应用过滤器
  5. 在伪代码中:

    private BufferedImage bufferedImage = new BufferedImage()
    private Graphics2D graphics = bufferedImage.createGraphics()
    
    void paint(Graphics2D input) {
        graphics.clip(selectionArea.getShape())
        upperCanvas.paint(graphics)
    
        BufferedImageOp op
        bufferedImage = op.filter(bufferedImage, new BufferedImage())
    
        input.drawImage(bufferedImage)
    }
    

    有关应用过滤器的信息,请参阅java.awt.image

    正如您所看到的,这个可以在java2d中完成,但API非常复杂。如果您有兴趣,我可以建议将纸浆作为替代框架。它包括几个预定义过滤器和一个用于应用它们的单行API。见demo。还包括一个Java2DSprite类,可以轻松地在pulpcore和java2d之间移植。