Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不应该';这个代码不会使整个画面变黑吗?_Javascript_Image_Image Processing_P5.js - Fatal编程技术网

Javascript 不应该';这个代码不会使整个画面变黑吗?

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

在p5.js中,我试图为一个个人项目处理图像的每个像素,所以我想我会慢慢开始,只是尝试将每个像素变黑。由于某种原因,屏幕只是保持白色,我不知道为什么像素没有被更新。代码如下:

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或网站做任何事情,所以我正在慢慢学习。