110 lines
2.4 KiB
JavaScript
110 lines
2.4 KiB
JavaScript
let img;
|
|
|
|
let morphs = [];
|
|
let count = 7;
|
|
let size = 10;
|
|
let countH = 400;
|
|
let countV = 260;
|
|
|
|
// Load the image
|
|
function preload() {
|
|
img = loadImage('/assets/mona-lisa.jpg');
|
|
for (let i = 0; i < count; i++)
|
|
morphs[i] = loadImage(`/assets/morphs/${i}.png`);
|
|
}
|
|
|
|
function setup() {
|
|
/*
|
|
createCanvas(26*size, 40*size);
|
|
imageMode(CORNER);
|
|
for (let i = 0; i < 26; i++) {
|
|
for (let j = 0; j < 40; j++) {
|
|
image(morphs[1], i*size, j*size, size, size);
|
|
}
|
|
}*/
|
|
|
|
pixelDensity(1);
|
|
|
|
// Display the image
|
|
img.resize(0, countH);
|
|
img.filter(GRAY);
|
|
createCanvas(countV, countH);
|
|
//createCanvas(countV*size, countH*size);
|
|
image(img, 0, 0);
|
|
|
|
loadPixels();
|
|
let pixels2d = new Array(countH);
|
|
for(let i = 0; i < countH; i++){
|
|
pixels2d[i] = new Array(countV);
|
|
}
|
|
let i = 0;
|
|
let j = 0;
|
|
let str1 = "";
|
|
let pixels1d = [];
|
|
for (let i = 0; i < pixels.length; i += 4)
|
|
pixels1d[i/4] = pixels[i];
|
|
/*
|
|
let averages = [];
|
|
let sum = 0;
|
|
for (let i = 0; i < pixels1d.length; i++) {
|
|
sum += pixels1d[i];
|
|
if (i%10 == 0) {
|
|
averages[i/10] = sum/10;
|
|
sum = 0;
|
|
}
|
|
}
|
|
*/
|
|
let averages = new Array(countH);
|
|
for (let i = 0; i < averages.length; i++)
|
|
averages[i] = new Array(countV/10);
|
|
|
|
let sum = 0;
|
|
let sum2 = [];
|
|
for(let k = 0; k < pixels1d.length; k++) {
|
|
//str1 += str(pixels1d[k]%count);
|
|
sum += pixels1d[k];
|
|
if (j%10 == 0) {
|
|
averages[i][j/10] = sum/10;
|
|
sum = 0;
|
|
}
|
|
pixels2d[i][j] = pixels1d[k]%count;
|
|
j++;
|
|
if (k%countV == 0 && k>0) {
|
|
//str1 += '\n';
|
|
i++;
|
|
j = 0;
|
|
}
|
|
}
|
|
let sums = []
|
|
let averages2 = new Array(countH/10);
|
|
for (let i = 0; i < averages2.length; i++)
|
|
averages2[i] = new Array(countV/10);
|
|
for (let i = 0; i < averages.length; i++) {
|
|
for (let j = 0; j < averages[0].length; j++) {
|
|
sums[j] += averages[i][j];
|
|
if (i%10 == 0) {
|
|
averages2[i/10][j] = Math.round(sums[j]/10);
|
|
if (!averages2[i/10][j]) averages2[i/10][j] = 0;
|
|
averages2[i/10][j] %= 7;
|
|
sums[j] = 0;
|
|
}
|
|
}
|
|
}
|
|
console.log(averages2);
|
|
console.log(pixels1d);
|
|
console.log(pixels2d);
|
|
|
|
//saveStrings(str1.split('\n'), 'data.txt');
|
|
//resizeCanvas(countV*10, countH*10)
|
|
fill(255);
|
|
//rect(0,0,countV,countH);
|
|
|
|
imageMode(CORNER);
|
|
for (let i = 0; i < countV/10; i++) {
|
|
for (let j = 0; j < countH/10; j++) {
|
|
image(morphs[averages2[j][i]], i*size, j*size, size, size);
|
|
}
|
|
}
|
|
|
|
describe('Mona lisa - by Davincci');
|
|
} |