loadPixels() 不适用于 p5.js
loadPixels() not working with p5.js
我想使用 p5.js 编辑图像(或只是 canvas)的像素,它显示在他们网站上的文档中:
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();
}
我只想能够编辑 canvas 的像素,但它不允许。
Here 是我正在使用的代码笔。
图像加载正常,但我无法编辑像素?
我在 Youtube 上关注 Daniel Shiffman 的 tutorials。
感谢任何帮助,谢谢。
图片加载需要几秒钟。 setup()
函数和对 draw()
函数的第一次调用在几毫秒内完成。 当您尝试绘制图像时图像未完成加载。这就是您得到空白的原因 canvas。
为了解决这个问题,p5.js 提供了一个 preload()
函数:
Called directly before setup(), the preload() function is used to handle asynchronous loading of external files. If a preload function is defined, setup() will wait until any load calls within have finished. Nothing besides load calls should be inside preload (loadImage, loadJSON, loadFont, loadStrings, etc).
在 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)
应该是什么 return。但希望该代码只是一个占位符,现在您可以继续加载图像了。
您可能想阅读 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>
Here is a CodePen 以上如果你想玩的话。
我想使用 p5.js 编辑图像(或只是 canvas)的像素,它显示在他们网站上的文档中:
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();
}
我只想能够编辑 canvas 的像素,但它不允许。
Here 是我正在使用的代码笔。
图像加载正常,但我无法编辑像素?
我在 Youtube 上关注 Daniel Shiffman 的 tutorials。
感谢任何帮助,谢谢。
图片加载需要几秒钟。 setup()
函数和对 draw()
函数的第一次调用在几毫秒内完成。 当您尝试绘制图像时图像未完成加载。这就是您得到空白的原因 canvas。
为了解决这个问题,p5.js 提供了一个 preload()
函数:
Called directly before setup(), the preload() function is used to handle asynchronous loading of external files. If a preload function is defined, setup() will wait until any load calls within have finished. Nothing besides load calls should be inside preload (loadImage, loadJSON, loadFont, loadStrings, etc).
在 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)
应该是什么 return。但希望该代码只是一个占位符,现在您可以继续加载图像了。
您可能想阅读 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>
Here is a CodePen 以上如果你想玩的话。