我想在处理中构建一种图像变形工具。类似于您在此链接中看到的内容:
https://giphy.com/gifs/painting-morph-oil-c8ygOpL64UDuw
我实现这一目标的第一步是构建一个二维像素网格。像素充满颜色。填充颜色是通过使用 get(); 从图像 (PImage img1;) 中读取颜色来创建的;功能。这就是我用像素重新创建图像的方式。在第二步中,我想我会使用 lerp(); 函数为各个像素提供第二张图像的颜色 (PImage img2;) - 我认为这会产生所需的变形效果。但是我错了!整个事情都有效 - 但效果只是在两个图像之间发生淡入。并且没有变形。在这种变形效果下,像素究竟会发生什么?我怎样才能在处理中重新创建它?
float pixel;
float pixelsize;
PImage img1;
PImage img2;
float counter;
void setup() {
size(1080, 1080);
pixel = 100;
pixelsize = width/pixel;
noStroke();
img1 = loadImage("0.jpg");
img2 = loadImage("1.jpg");
counter = 0;
}
void draw() {
background(255);
for (int y = 0; y < pixel; y++) {
for (int x = 0; x < pixel; x++) {
color c1 = img1.get(int(pixelsize*x), int(pixelsize*y));
color c2 = img2.get(int(pixelsize*x), int(pixelsize*y));
color from = c1;
color to = c2;
color interA = lerpColor(from, to, counter);
pushMatrix();
translate(pixelsize*x, pixelsize*y);
fill(interA);
rect(0, 0, pixelsize, pixelsize);
popMatrix();
}
}
counter= counter + 0.01;
}