ライブデモ
その実際には非常に簡単です。必要なのは、必要なサイズのキャンバスに画像を描画し、toDataUrl()
後でそれを呼び出して、結果の画像データを取得することです。元の画像のコンテンツをトリミングされた領域に描画している限り、画像自体を別のキャンバスに描画しても、出力にはまったく影響しません。
var canvas = document.getElementsByTagName("canvas")[0],
context = canvas.getContext("2d"),
img = document.getElementsByTagName("img")[0];
canvas.width = 600;
canvas.height = 400;
context.drawImage(img, 0,0,600,400);
var croppedCanvas = document.getElementById("tempCanvas"),
croppedCtx = croppedCanvas.getContext("2d");
croppedCanvas.width = 400;
croppedCanvas.height = 200;
croppedCtx.drawImage(img, 0, 0);