Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to scale an imageData in HTML canvas?

I have a canvas in my webpage; I create a new Image data in this canvas then I modify some pixel through myImgData.data[] array. Now I would like to scale this image and make it bigger. I tried by scaling the context but the image remains small. Is it possible to do this? Thanks

like image 341
Masiar Avatar asked Aug 10 '10 11:08

Masiar


People also ask

How do you scale on canvas?

The scale() method scales the current drawing, bigger or smaller. Note: If you scale a drawing, all future drawings will also be scaled. The positioning will also be scaled. If you scale(2,2); drawings will be positioned twice as far from the left and top of the canvas as you specify.

What is ImageData?

The ImageData interface represents the underlying pixel data of an area of a <canvas> element. It is created using the ImageData() constructor or creator methods on the CanvasRenderingContext2D object associated with a canvas: createImageData() and getImageData() .


1 Answers

You could draw the imageData to a new canvas, scale the original canvas and then draw the new canvas to the original canvas.

Something like this should work:

var imageData = context.getImageData(0, 0, 100, 100); var newCanvas = $("<canvas>")     .attr("width", imageData.width)     .attr("height", imageData.height)[0];  newCanvas.getContext("2d").putImageData(imageData, 0, 0);  context.scale(1.5, 1.5); context.drawImage(newCanvas, 0, 0); 

Here's a functioning demo http://jsfiddle.net/Hm2xq/2/.

like image 53
Castrohenge Avatar answered Sep 19 '22 09:09

Castrohenge