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;我正在投票重新讨论这个问题。它完全清楚,包含一个完美的答案。