Javascript 不应该';这个代码不会使整个画面变黑吗?
在p5.js中,我试图为一个个人项目处理图像的每个像素,所以我想我会慢慢开始,只是尝试将每个像素变黑。由于某种原因,屏幕只是保持白色,我不知道为什么像素没有被更新。代码如下:Javascript 不应该';这个代码不会使整个画面变黑吗?,javascript,image,image-processing,p5.js,Javascript,Image,Image Processing,P5.js,在p5.js中,我试图为一个个人项目处理图像的每个像素,所以我想我会慢慢开始,只是尝试将每个像素变黑。由于某种原因,屏幕只是保持白色,我不知道为什么像素没有被更新。代码如下: var Canvas; var srcImg; var defaultImg = "http://i.imgur.com/ARg0OOy.jpg"; function preload() { srcImg = loadImage(defaultImg); } function setup () { createCa
var Canvas;
var srcImg;
var defaultImg = "http://i.imgur.com/ARg0OOy.jpg";
function preload() {
srcImg = loadImage(defaultImg);
}
function setup () {
createCanvas(srcImg.width,srcImg.height);
noLoop();
}
function draw() {
srcImg.loadPixels();
for (var x = 0; x < srcImg.width; x++) {
for (var y = 0; y < srcImg.height; y++) {
var loc = x + y*srcImg.width;
srcImg.pixels[loc] = color(224,29,29);
}
}
console.log(loc);
console.log(srcImg.width);
console.log(srcImg.height);
console.log(srcImg.width * srcImg.height);
srcImg.updatePixels();
//image(srcImg, 0,0,srcImg.width, srcImg.height);
}
var画布;
var-srcImg;
var defaultImg=”http://i.imgur.com/ARg0OOy.jpg";
函数预加载(){
srcImg=loadImage(defaultImg);
}
函数设置(){
createCanvas(srcImg.width、srcImg.height);
noLoop();
}
函数绘图(){
srcImg.loadPixels();
对于(var x=0;x
另外,如果我取消最后一行的注释,我会看到原始图片,它在顶部被截断(并且没有将每个像素变黑)。你可以亲眼看到为什么会发生这种情况
编辑:我甚至试着把一行像素变成鲜艳的红色,而我得到白色屏幕的原因是,不管我把像素设置成什么颜色,它们都会变成白色。。。另外,当我试着把整行变成红色时,它停在图中所示的1/4左右(仍然是白色)。我不知道为什么会发生这种情况。您将所有像素都设置为黑色,但随后您将在这些黑色像素的顶部绘制
srcImage
。所以你所看到的就是srcImage
尝试注释
图像(srcImg,0,0,srcImg.width,srcImg.height)
line以查看黑色像素。Hmm,但是updatePixels()
是否会覆盖原始的srcImg
,使其变为黑色?无论哪种方式,我都试着对它进行注释,但现在屏幕上什么也没有显示。@AlexHutman为什么updatePixels()
会覆盖原始的srcImage
?没有什么是屏幕上应该显示的-你只画了黑色像素。哦,我错了。我认为updatePixels()
会改变图像的像素,而不是画布。另外,当我说屏幕上没有显示任何内容时,我的意思是我有一个完全白色的屏幕。没有黑色。@AlexHutman如果你想更新图像的像素,你需要srcImage.loadPixels()
等等。目前,您的代码正在更新屏幕上的像素。如果您没有看到黑色像素,那么我建议调试以查看您正在更新的像素位置。我只是尝试将loadPixels()
更改为srcImg.loadPixels()
,pixels[loc]
更改为srcImg.pixels[loc]
,以及updatePixels()
更改为srcImg.updatePixels()
。我还记录了loc
的值,它对应于我图像尺寸的乘积(当然是负1)。由于某种原因,我仍然只是看到一个白色的屏幕。我应该尝试处理3.3吗?我现在在3.3.4上。如果这令人沮丧,我很抱歉,这是我第一次用Javascript或网站做任何事情,所以我正在慢慢学习。