loadPixels()不适用于p5.js
loadPixels() not working with p5.js
我想使用p5.js编辑图像(或只是画布)的像素,它在他们的网站上的文档中显示:
var img;
function preload() {
img = loadImage("assets/rockies.jpg");
}
function setup() {
image(img, 0, 0);
var d = pixelDensity();
var halfImage = 4 * (img.width * d) *
(img.height/2 * d);
loadPixels();
for (var i = 0; i < halfImage; i++) {
pixels[i+halfImage] = pixels[i];
}
updatePixels();
}
因此,我在codepen中尝试了正确链接p5.js的代码,但它不起作用(当然是在我自己的图像中)。
我在Processing IDE中制作了一个版本,它起作用了,所以我试图将它转换为JS,我不明白为什么它不起作用?
var img;
function setup() {
createCanvas(500, 400);
img = loadImage("https://s3-us-west-2.amazonaws.com/s.cdpn.io/379903/image.png"); // Load the image
}
function draw() {
background(255);
image(img, 0, 0, 500, 400);
loadPixels();
for (var i = 0; i < pixels.length; i++) {
pixels[i] = color(255, i, 0);
}
updatePixels();
}
我只是想能够编辑画布的像素,但它不允许我。
这是我正在用的电笔。
图像加载良好,但我无法编辑像素?
我在Youtube上学习Daniel Shiffman的教程。
感谢您的帮助。
加载图像需要几秒钟的时间。setup()
函数和对draw()
函数的第一次调用在几毫秒内完成当你试图绘制图像时,它还没有加载完毕。这就是为什么你会得到一个空白画布。
为了解决这个问题,p5.js提供了一个preload()
函数:
preload()函数在setup()之前直接调用,用于处理外部文件的异步加载。如果定义了预加载函数,setup()将等待,直到内的任何加载调用完成。除了load调用之外,预加载(loadImage、loadJSON、loadFont、loadStrings等)中不应该有其他内容。
在preload()
而不是setup()
函数中加载图像:
var img;
function preload(){
img = loadImage("https://graph.facebook.com/100001230751686/picture?type=large");
}
function setup() {
createCanvas(500, 400);
noLoop();
}
function draw(){
image(img, 0, 0, 500, 400);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.0/p5.js"></script>
我不太确定你想对像素做什么,因为你的代码的其余部分没有什么意义。考虑一下i
变量是什么,color(255, i, 0)
应该返回什么。但希望该代码只是一个占位符,现在可以加载图像了,您就可以继续了。
您可能想要了解pixels[]
阵列。这里有一个例子显示了你的图像,但每个像素的强度减半:
var img;
function preload(){
img = loadImage("https://graph.facebook.com/100001230751686/picture?type=large");
}
function setup() {
createCanvas(500, 400);
noLoop();
}
function draw() {
background(0);
image(img, 0, 0, 500, 400);
loadPixels();
for (var i = 0; i < pixels.length; i++) {
pixels[i] = pixels[i]/2;
}
updatePixels();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.0/p5.js"></script>
如果你想玩的话,这里有一个上面的CodePen。
- 如何在p5.js中管理多智力竞赛游戏的多个屏幕
- 创建P5.js二维数组
- p5.js声音库:如何添加/删除p5.第5页中的短语().零件()
- 创建一个简单的处理 p5.js 库
- p5.js:如何根据HTML页面使我的草图加载不同的.txt文件
- p5.js:如何访问for()循环中的元素以进行滚动
- loadPixels()不适用于p5.js
- 让粒子出现在p5.js中的OnClick函数中
- 如何使用P5.js绘制极坐标
- 在新框架上绘制图像,同时仍然使用P5.js中的利萨茹曲线
- 如何在 p5.js 中将 For 循环的文本输出替换为不同的值
- 对于循环,在 p5.js 中创建形状
- p5.js 将纹理加载到 2D 椭圆上
- p5.js createCanvas 未定义错误.未捕获的引用错误
- p5.js loadFont function?
- 在p5.js-webgl3d中绘制一个四边形
- 图像数组P5.js
- 访问像素[]数组在p5.js (javascript)
- 为什么在实例模式下使用p5.js时没有定义常量?
- 为p5.js/ Javascript中的对象分配数组中的颜色