diff --git a/script.js b/script.js index e60d62d..792c92e 100644 --- a/script.js +++ b/script.js @@ -15,9 +15,12 @@ const canvas = document.getElementById('canvas1'); const ctx = canvas.getContext('2d'); + +// dessert image... canvas.width = 1024; canvas.height = 682; +// deadpool image... // canvas.width = 1200; // canvas.height = 675; @@ -36,19 +39,19 @@ this.grayScaleArray = []; // this.palette = ["264653","2a9d8f","e9c46a","f4a261","e76f51"]; // this.palette = ["780116","f7b538","db7c26","d8572a","c32f27"]; - // this.palette = ["220901","621708","941b0c","bc3908","f6aa1c"]; // prettiest - this.palette = ["172121","444554","7f7b82","bfacb5","e5d0cc"]; // gray scale + // this.palette = ["220901","621708","941b0c","bc3908","f6aa1c"]; // prettiest - red-orange colors + // this.palette = ["03045e","0077b6","00b4d8","90e0ef","caf0f8"]; // blues... + // this.palette = ["386641","6a994e","a7c957","f2e8cf","bc4749"]; // greens with one shade of red + this.palette = ["00401e","10772a","1db233","ffcc12","ffd712"]; // greens and yellows + // this.palette = ["172121","444554","7f7b82","bfacb5","e5d0cc"]; // gray scale this.slideX = 0; this.slideY = 0; this.image = document.getElementById('projectImage'); } draw(context) { - // if (this.grayValue === undefined) { context.drawImage(this.image, this.x, this.y, this.width, this.height , this.x, this.y, this.width, this.height); - // context.strokeRect(this.x, this.y, this.width, this.height); - // if (this.x === 0 && this.y === 0) { for(let y = this.y; y < this.y + this.height; y++) { for(let x = this.x; x < this.x + this.width; x++) { @@ -63,26 +66,11 @@ this.greenAvg = Math.floor(this.greenAvg / totalPixels); this.blueAvg = Math.floor(this.blueAvg / totalPixels); this.grayValue = this.calculateGrayAmount(this.redAvg, this.greenAvg, this.blueAvg); - // console.log('Gray value: ' + this.grayValue); - // } const paletteIndex = Math.floor(this.grayValue / 50); - // const paletteIndex = this.grayValue % this.palette.length; console.log('(' + this.x + ', ' + this.y + ') palIndex:' + paletteIndex); context.fillStyle = '#' + this.palette[paletteIndex]; - // context.fillStyle = "rgb(" + this.redAvg + "," + this.greenAvg + "," + this.blueAvg + ")"; context.fillRect(this.x, this.y, this.width, this.height); - // } - - // if (this.grayValue !== undefined) { - // // console.log('Here...'); - // const paletteIndex = Math.floor(this.grayValue / 50); - // // const paletteIndex = this.grayValue % 3; - // console.log('(' + this.x + ', ' + this.y + ') palIndex:' + paletteIndex); - // context.fillStyle = '#' + this.palette[paletteIndex]; - // // context.fillStyle = "rgb(" + this.redAvg + "," + this.greenAvg + "," + this.blueAvg + ")"; - // context.fillRect(this.x, this.y, this.width, this.height); - // } } calculateGrayAmount(red, green, blue) { @@ -97,6 +85,10 @@ this.canvas = canvas; this.width = this.canvas.width; this.height = this.canvas.height; + + // change cell size ... increase number of + // rows and columns creates smoother posterization... + // 1-for-1 smoothest, cleanest image... this.numCols = this.canvas.width; this.numRows = this.canvas.height; // this.numCols = 64; @@ -105,9 +97,6 @@ this.cellHeight = this.height / this.numRows; this.imageGrid = []; this.createGrid(); - // this.cell = new Cell(this, 0, 0); - - // console.log(this.imageGrid); } createGrid() { @@ -119,9 +108,7 @@ } render(context) { - // this.cell.draw(context); this.imageGrid.forEach(cell=> { - // cell.update(); cell.draw(context); }) } @@ -129,8 +116,6 @@ } const effect = new Effect(canvas); -// console.log(effect); -// effect.render(ctx); function animate() { effect.render(ctx); @@ -138,12 +123,3 @@ } animate(); - -/* -TODO: -1. For each cell: - a. average red, green and blue colors - b. calculate gray amount - c. determine palette color - i. 0 - 50, 51 - 101, 102 - 152, 153 - 203, 204 - 255 -*/