title: Capturing only a portion of canvas with .todataurl Javascript/HTML5
body: <p>I can capture a full canvas with .todataurl without a problem.  But I do not see or know if there is anyway to capture only a portion of the canvas and save that to image.</p>
  
  <p>e.i. Mr. Potatohead script draws hats, hands feet faces etc etc. mixed all over the canvas and you can drag and drop them onto the mr potato in the center of the canvas.  Press a button save the image of mr potato looking all spiffy to jpg for you.  Without all the extra hats/feet/faces in the image.  </p>
  
  <p>I have resigned myself to the fact that this is impossible based on everything I've read.  But you folks have proven to be smarter than google (or atleast google in my hands) a few times so i am taking a shot.</p>
  
  <p>Sorry no code to post this time... unless you want this:</p>
  
  <pre><code>var canvas  = document.getElementById("mrp");
  var dataUrl = canvas.toDataURL();
  
  window.open(dataUrl, "toDataURL() image", "width=800, height=600");
  </code></pre>
  
  <p>But that is just the example of dataurl i am working off of.. and it works outside of the fact it doesnt cap just the mr potato</p>
  
  <p>My fallback is to pass the image to php and work with it there to cut out everything i dont want then pass it back.</p>
  
  <p><strong>EDIT</strong></p>
  
  <p>tmcw had a method for doing this. Not sure if its the way it SHOULD be done but it certainly works.</p>
  
  <pre><code>document.getElementById('grow').innerHTML="&lt;canvas id='dtemp' &gt;&lt;/canvas&gt;";
  var SecondaryCanvas  = document.getElementById("dtemp");
  var SecondaryCanvas_Context = SecondaryCanvas.getContext ("2d");
  SecondaryCanvas_Context.canvas.width = 600;
  SecondaryCanvas_Context.canvas.height = 600;
  var img = new Image();
  img.src = MainCanvas.toDataURL('image/png');
  SecondaryCanvas_Context.drawImage(img, -400, -300);
  var du = SecondaryCanvas.toDataURL();
  window.open(du, "toDataURL() image", "width=600, height=600");
  document.getElementById('grow').innerHTML="";
  </code></pre>
  
  <p>grow is an empty span tag,  SecondaryCanvas is a var created just for this
  SecondaryCanvas_Context is the getcontext of SecondaryCanvas
  img created just to store the .toDataURL() of the main canvas containing the Mr. PotatoHead
  drawImage with negative (-) offsets to move image of MainCanvas so that just the portion i want is showing.
  Then cap the new canvas that was just created and open a new window with the .png</p>
  
  <p>on and if you get an error from the script saying security err 18 its because you forgot to rename imgTop to img with the rest of the variables you copy pasted and chrome doesnt like it when you try to save local content images like that. </p>