Processing 使用loadPixels复制图像时颜色错误

Processing 使用loadPixels复制图像时颜色错误,processing,p5.js,Processing,P5.js,我正在尝试复制椭圆,以便其复制的中心点与两个轴上的原始位置相反,使用pixels[]数组将像素数据复制到新位置。但是,副本的颜色与原件不同(不是黑色,而是粉红色);这些颜色不是我想复制的。为什么会这样 代码如下: function setup() { createCanvas(600, 600); smooth(8); rectMode(CENTER); fill(250); stroke(32); strokeWeight(10); } function draw(

我正在尝试复制椭圆,以便其复制的中心点与两个轴上的原始位置相反,使用
pixels[]
数组将像素数据复制到新位置。但是,副本的颜色与原件不同(不是黑色,而是粉红色);这些颜色不是我想复制的。为什么会这样


代码如下:

function setup() {
  createCanvas(600, 600);
  smooth(8);
  rectMode(CENTER);
  fill(250);
  stroke(32);
  strokeWeight(10);
}

function draw() {
    draw_();
}

function draw_() {
  background(250); 
  ellipse(100, 100, 100, 100)
  loadPixels();
  for(var i=0; i<pixels.length/2; i++)
    pixels[pixels.length-i-1] = pixels[i];
  updatePixels();
}
函数设置(){
createCanvas(600600);
光滑(8);
矩形模式(中心);
填充(250);
中风(32);
冲程重量(10);
}
函数绘图(){
画图();
}
函数draw_uuz(){
背景(250);
椭圆(100100100100)
loadPixels();
对于(var i=0;i根据,
像素
数组根据索引以红色、绿色、蓝色和alpha分量包含信息,如下所示:

pixels[0] = red(myColor);
pixels[1] = green(myColor);
pixels[2] = blue(myColor);
pixels[3] = alpha(myColor);

pixels[4] = red(myColor);
pixels[5] = green(myColor);
pixels[6] = blue(myColor);
pixels[7] = alpha(myColor);

//...
因此,如果你简单地反转数组,你将不仅仅是反转图像,你还将弄乱颜色:你将交换红色和alpha,绿色和蓝色


您最好使用
get()
函数,该函数接受一个
x
y
参数,并返回一个全色。同样,可以在中找到更多信息。

非常感谢Kevin的帮助,它成功了

  for(var i=0; i<pixels.length/2; i+=4) {
    pixels[pixels.length-i-4] = pixels[i];
    pixels[pixels.length-i-3] = pixels[i+1];
    pixels[pixels.length-i-2] = pixels[i+2];
    pixels[pixels.length-i-1] = pixels[i+3];
  }

for(var i=0;我正在投票重新讨论这个问题。它完全清楚,包含一个完美的答案。