0

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

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

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

4

1 回答 1

0

基本上,您需要做的是:

  1. 创建一个 BufferedImage 并将其与 Graphics 对象链接
  2. 设置剪辑区域
  3. 绘制到此 Graphics 对象
  4. 在 BufferedImage 对象上应用过滤器

在伪代码中:

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 相当复杂。如果您有兴趣,我可以建议将pulpcore 作为替代框架。它包括几个预定义过滤器和一个用于应用它们的单行 API。见演示。还包括一个Java2DSprite 类,用于在pulpcore 和java2d 之间轻松移植。

于 2011-04-16T11:15:23.663 回答