Save an image after Manipulating
<!DOCTYPE html> <html> <head> /*from w ww . ja v a2 s . c o m*/ <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { let canvas = $("#myCanvas"); let context = canvas.get(0).getContext("2d"); // Pixelating let image = new Image(); image.src = "http://java2s.com/style/demo/jet.png"; $(image).load(function() { context.drawImage(image, 0, 0, 1024, 683, 0, 0, 500, 500); let imageData = context.getImageData(0, 0, canvas.width(), canvas.height()); let pixels = imageData.data; // Clear the image context.clearRect(0, 0, canvas.width(), canvas.height()); // Number of tiles let numTileRows = 20; let numTileCols = 20; // Dimensions of each tile let tileWidth = imageData.width/numTileCols; let tileHeight = imageData.height/numTileRows; // Loop through each tile for (let r = 0; r < numTileRows; r++) { for (let c = 0; c < numTileCols; c++) { let x = (c*tileWidth)+(tileWidth/2); let y = (r*tileHeight)+(tileHeight/2); // Use Math.floor to convert the pixel positions to integers let pos = (Math.floor(y)*(imageData.width*4))+(Math.floor(x)*4); let red = pixels[pos+0]; let green = pixels[pos+1]; let blue = pixels[pos+2]; context.fillStyle = "rgb("+red+", "+green+", "+blue+")"; // Draw the pixelated circles context.beginPath(); context.arc(x, y, tileWidth/2, 0, Math.PI*2); context.closePath(); context.fill(); }; }; // Convert the canvas into an image data URL let dataURL = canvas.get(0).toDataURL(); let img = $("<img></img>"); img.attr("src", dataURL); // Replace the canvas with the image of the canvas canvas.replaceWith(img); }); }); </script> </head> <body> <canvas id="myCanvas" width="500" height="500"> <!-- Insert fallback content here --> </canvas> </body> </html>