处理:曲线上的透明图像

时间:2013-03-18 23:11:16

标签: image png jpeg processing transparent

我是Processing的新手。我想在曲线和椭圆上放一个.jpg或.png,这样它们只能看到图像透明的位置。 我的代码如下。问题在于透明区域不是完全透明的,但是透明的白色和不透明的部分也降低了不透明度。

    PImage img;

    void setup() {
      size(300,500);
      frameRate(30); 
      strokeWeight(4);   
      img = loadImage("sziluettmeret.jpg"); 
    }

   void draw() {
        background(0, 50, 70);  
        stroke(0,70,90);
        noFill();
        beginShape();
        curveVertex(-100,  -100);
        curveVertex(10, 10);
        curveVertex(250,  250);
        curveVertex(300,  300);
        endShape();

       fill(255);
       ellipse(20 ,20,15,15);

       noFill();
       tint(255, 100);
       image(img, 0, 0);
    }

更新:

我的代码中有这个:

    loadPixels();
    for(int i=0; i < img.pixels.length; i++) {
    tmpColor = img.pixels[i];
    tmpRed = red(tmpColor);
    tmpGreen = blue(tmpColor);
    tmpBlue = green(tmpColor);
    tmpAlpha = 255 - ((tmpRed + tmpGreen + tmpBlue)/3);
    img.pixels[i] = color(2*tmpRed,tmpGreen/2,tmpBlue,0); 
    if(0xFFFFFF == tmpColor)


      }
     updatePixels();

图片不会变得透明。 (但它变成紫色,所以循环在每个像素上运行肯定)

1 个答案:

答案 0 :(得分:1)

tint()不进行绿屏。它将重新着色你的图像(如果你使用非中性色),并设置混合透明度,所以使用色调(255,100),你有效给图像的不透明度(大约)0.39

如果你想进行绿屏(或在你的情况下,进行白屏),你想在加载图像时浏览图像的像素,然后在r / g / b为255时将不透明度设置为0,有效地“移除”你所有的白色像素。