如何隐藏或淡出图像(使用 loadImage 创建)?
How do I hide or fade out an image (created with loadImage)?
我有一张正在渲染的图像,使用 loadImage
。当我在键盘上按 h 时,我怎样才能隐藏图像?我怎样才能淡出图像?
代码:
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Image Testing</title>
</head>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.3/p5.min.js"></script>
<script src="script.js"></script>
</body>
</html>
script.js
let img;
function preload() {
img = loadImage('https://images.pexels.com/photos/20787/pexels-photo.jpg?auto=compress&cs=tinysrgb&dpr=1&w=500')
}
function setup() {
createCanvas(500, 300);
}
function draw() {
background(225);
fill(0);
image(img, 0,0)
}
我能想到的最简单的方法是使用 tint()
.
这是一个基本的演示:水平移动鼠标改变透明度:
let img;
let alpha = 255;
function preload() {
img = loadImage('https://images.pexels.com/photos/20787/pexels-photo.jpg?auto=compress&cs=tinysrgb&dpr=1&w=500')
}
function setup() {
createCanvas(500, 300);
}
function draw() {
alpha = map(mouseX, 0, width, 0, 255);
background(225);
fill(0);
circle(mouseX, mouseY, 30);
tint(255, alpha);
image(img, 0,0)
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.2.0/p5.min.js"></script>
隔离渲染样式(例如 tint()
)
此外,您可以手动访问p5.Image
pixel data并修改alpha通道:
let img;
let alpha = 255;
let imgFaded;
function preload() {
img = loadImage('https://images.pexels.com/photos/20787/pexels-photo.jpg?auto=compress&cs=tinysrgb&dpr=1&w=500')
}
function setup() {
createCanvas(500, 300);
imageMode(CENTER);
imgFaded = img.get();
}
function draw() {
alpha = map(mouseX, 0, width, 0, 255);
background(225);
fill(0);
circle(250, 150, 150);
setImageAlpha(img, imgFaded, alpha);
image(imgFaded, mouseX, mouseY);
}
function setImageAlpha(src, dst, alpha){
alpha = constrain(alpha, 0, 255);
src.loadPixels();
dst.loadPixels();
const NUM_BYTES = dst.pixels.length;
// skip every 4 values (r, g, b, a)
for(let i = 0 ; i < NUM_BYTES; i+= 4){
// copy R, G, B
dst.pixels[i + 0] = src.pixels[i + 0];
dst.pixels[i + 1] = src.pixels[i + 1];
dst.pixels[i + 2] = src.pixels[i + 2];
// access alpha (index + 3) and modify
dst.pixels[i + 3] = alpha;
}
dst.updatePixels();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.2.0/p5.min.js"></script>
我有一张正在渲染的图像,使用 loadImage
。当我在键盘上按 h 时,我怎样才能隐藏图像?我怎样才能淡出图像?
代码:
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Image Testing</title>
</head>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.3/p5.min.js"></script>
<script src="script.js"></script>
</body>
</html>
script.js
let img;
function preload() {
img = loadImage('https://images.pexels.com/photos/20787/pexels-photo.jpg?auto=compress&cs=tinysrgb&dpr=1&w=500')
}
function setup() {
createCanvas(500, 300);
}
function draw() {
background(225);
fill(0);
image(img, 0,0)
}
我能想到的最简单的方法是使用 tint()
.
这是一个基本的演示:水平移动鼠标改变透明度:
let img;
let alpha = 255;
function preload() {
img = loadImage('https://images.pexels.com/photos/20787/pexels-photo.jpg?auto=compress&cs=tinysrgb&dpr=1&w=500')
}
function setup() {
createCanvas(500, 300);
}
function draw() {
alpha = map(mouseX, 0, width, 0, 255);
background(225);
fill(0);
circle(mouseX, mouseY, 30);
tint(255, alpha);
image(img, 0,0)
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.2.0/p5.min.js"></script>
tint()
)
此外,您可以手动访问p5.Image
pixel data并修改alpha通道:
let img;
let alpha = 255;
let imgFaded;
function preload() {
img = loadImage('https://images.pexels.com/photos/20787/pexels-photo.jpg?auto=compress&cs=tinysrgb&dpr=1&w=500')
}
function setup() {
createCanvas(500, 300);
imageMode(CENTER);
imgFaded = img.get();
}
function draw() {
alpha = map(mouseX, 0, width, 0, 255);
background(225);
fill(0);
circle(250, 150, 150);
setImageAlpha(img, imgFaded, alpha);
image(imgFaded, mouseX, mouseY);
}
function setImageAlpha(src, dst, alpha){
alpha = constrain(alpha, 0, 255);
src.loadPixels();
dst.loadPixels();
const NUM_BYTES = dst.pixels.length;
// skip every 4 values (r, g, b, a)
for(let i = 0 ; i < NUM_BYTES; i+= 4){
// copy R, G, B
dst.pixels[i + 0] = src.pixels[i + 0];
dst.pixels[i + 1] = src.pixels[i + 1];
dst.pixels[i + 2] = src.pixels[i + 2];
// access alpha (index + 3) and modify
dst.pixels[i + 3] = alpha;
}
dst.updatePixels();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.2.0/p5.min.js"></script>