Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

drawImage and resize to Canvas

I have an image which is 1836 x 3264 I want to drawImage() to canvas and resize to 739 x 1162.

After reading the documentation I thought this could be accomplished with the following:

ctx.drawImage(image, 0, 0, 739, 1162);

I have also tried:

ctx.drawImage(image, 0, 0, 1836, 3264, 0, 0, 739, 1162);

Both show only a small part of the full image instead of shrinking it down.

How do I pass through the values to resize from 1836 x 3264 -> 739 x 1162 ?

like image 314
Philip Kirkbride Avatar asked Mar 03 '13 23:03

Philip Kirkbride


People also ask

How can you resize the canvas?

With the Select and Move Tool, click the canvas size label or border to select the canvas. Click the canvas border handles to resize the canvas dynamically. When you drag the border handles without using any keyboard modifiers, the canvas resizes non-uniformly. Hold Shift to constrain the resize proportions.

How do you dynamically resize canvas?

Resizing the canvas on the fly is quite easy. To do it, simply set the width and height properties of the Canvas object, and then redraw the canvas contents: Canvas . width = 600 ; Canvas .

How do you fill an image on canvas?

You have to wait until the image loads, use the image's onload property to know when it loads. Oi, I fixed it by adding (just before context. fill()): context. rect(x,y,width,height); Then it did exactly what I wanted.


1 Answers

What you have looks correct, so you might double-check for a typo somewhere.

[additional thought: Is your image really 1836x3264 and not 3264x1836.]

Here is working code and a Fiddle: http://jsfiddle.net/m1erickson/MLGr4/

<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" media="all" href="css/reset.css" /> <!-- reset css -->
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>

<style>
    body{ background-color: ivory; }
    canvas{border:1px solid red;}
</style>

<script>
$(function(){

    var canvas=document.getElementById("canvas");
    var ctx=canvas.getContext("2d");

    img=new Image();
    img.onload=function(){
        canvas.width=400;
        canvas.height=300;
        ctx.drawImage(img,0,0,img.width,img.height,0,0,400,300);
    }
    img.src="http://www.onestopwebmasters.com/wp-content/uploads/2011/06/eitai-bridge.jpg";

}); // end $(function(){});
</script>

</head>

<body>
    <canvas id="canvas" width=100 height=100></canvas>
</body>
</html>
like image 197
markE Avatar answered Oct 15 '22 00:10

markE