我正在尝试从自定义形状创建图像的蒙版。 在处理过程中,我想出了这个:
Image img;
PImage img2;
PGraphics mGraphic;
void setup(){
img = loadImage("mask.jpg");
img2 = loadImage("test.jpg");
mGraphic = createGraphics(1024,1024, JAVA2D);
size(img.width, img.height);
}
void draw(){
background(255);
mGraphic.beginDraw();
mGraphic.background(0);
mGraphic.ellipse(mouseX, mouseY, 400, 400);
mGraphic.endDraw();
img2.mask(mGraphic);
image(img2,0,0);
}
上面的代码将创建一个椭圆,它将成为图像的蒙版。 我希望通过Polygons生成的自定义形状实现相同的目标:
import java.awt.Polygon;
PImage img;
PImage img2;
PGraphics mGraphic;
CustomShape myShape = new CustomShape();
void setup(){
img = loadImage("mask.jpg");
img2 = loadImage("test.jpg");
mGraphic = createGraphics(1024,1024, JAVA2D);
myShape.addPoint(25, 25);
myShape.addPoint(275, 25);
myShape.addPoint(275, 75);
myShape.addPoint(175, 75);
myShape.addPoint(175, 275);
myShape.addPoint(125, 275);
myShape.addPoint(125, 75);
myShape.addPoint(25, 75);
smooth();
// img2.filter(INVERT);
size(img.width, img.height);
}
void draw(){
background(255);
stroke(0);
myShape.display();
img2.mask(myShape);
image(img2,0,0);
}
class CustomShape extends Polygon {
void display() {
stroke(0);
fill(0);
beginShape();
for (int i=0; i<npoints; i++) {
vertex(xpoints[i], ypoints[i]);
}
endShape(CLOSE);
}
}
不幸的是,此代码会给我一个错误:The method mask(int[]) in the type PImage is not applicable for the arguments (Masking_image_1.CustomShape)
这甚至可以获得与我的第一个代码相同的结果,但是然后使用自定义形状?我该如何解决?
如果还有任何问题,请告诉我。上面的代码可以在Processing中使用。
答案 0 :(得分:1)
嗯,您的错误说明了一切:mask()
函数不知道如何处理CustomShape
参数。参数必须是PImage
或掩码数组。更多信息可以在the reference找到。
要使用自定义形状,您要执行的操作是将该自定义形状绘制到PGraphics
(PImage
的子类),然后使用PGraphics
作为面具。你可以使用createGraphics()
函数来做到这一点。同样,可以在the reference中找到更多信息。