首页 > 解决方案 > 处理:部分模糊部分背景

问题描述

一些背景信息:这个项目是一个简单的图像,在项目结束时将成为我电脑屏幕的背景。

我想模糊背景的一部分,以便文本的一部分更明显。我可以模糊文本本身的图像的一部分,但这是我最后的手段。我不想这样做,因为在未来的项目中,我想随着某些东西的移动而主动模糊背景(我还没有开始这个未来的项目,所以我无法更好地描述那个项目)。

有谁知道如何模糊背景的一部分?对于这个项目,它需要大约 400x200 像素并模糊 10%-15%

标签: processing

解决方案


这是一个可以做到这一点的函数。它是静态方法,接受对 PApplet 的引用,因此如果您在 PDE 中工作,您可以从方法签名中删除此参数。此外,使用这种方法,您可以指定区域的中心,而不是左上角(根据需要进行修改)。

public static void blur(applet p, int regionCentreX, int regionCentreY, int regionWidth, int regionHeight,
        float blurStrength) {

    PGraphics g;
    g = p.createGraphics(regionWidth, regionHeight);
    g.beginDraw();
    g.loadPixels();

    int cornerX = PApplet.constrain(regionCentreX - (regionWidth / 2), 0, p.width - regionWidth);
    int cornerY = PApplet.constrain(regionCentreY - (regionHeight / 2), 0, p.height - regionHeight);

    p.loadPixels();
    int graphicsIndex = 0;
    for (int y = 0; y < regionHeight; y++) {
        for (int x = 0; x < regionWidth; x++) {
            g.pixels[graphicsIndex] = p.pixels[(cornerY + y) * p.width + (cornerX + x)];
            graphicsIndex++;
        }
    }
    p.updatePixels();

    g.updatePixels();
    g.filter(PConstants.BLUR, blurStrength);
    g.endDraw();
    p.image(g, cornerX, cornerY);
}

例如,blurStrength=5: 在此处输入图像描述


推荐阅读