2010-06-11 95 views

回答

9

你不需要任何转换,只是

canvas.drawImage(image, dx, dy) 
canvas.drawImage(image, dx, dy, dw, dh) 
canvas.drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh) 

(从here拍摄)使用图像(通过URL或DOM任何一个新的)。

请参阅developer.mozilla.org的教程。

+0

S /帆布/背景 – 2011-06-05 06:51:35

+2

什么,如果你想使用操纵画布上的图像的像素数据? – ina 2011-07-11 09:41:50

12

这里是一个工具,将生成的JavaScript代码在画布上绘制的图像:http://lab.abhinayrathore.com/img2canvas/

+2

感谢您回答OP的问题。这个页面上的其他答案是无关紧要的。 – 2012-02-22 16:53:10

+1

这个工具可以完成这项工作,但它也是非常低效的。它为每个像素做一个fillRect,并且根本不识别连续的线或框,更少的圆或其他形状。 – 2013-04-04 19:15:08

1

您可以使用上面列出的网站,但这里是有关的代码:

function convertImage(canvas, callback) { 
var image = new Image(); 
image.onload = function(){ 
callback(image); 
} 
image.src = canvas.toDataURL("image/png"); 
} 

另外,我放在一起working jsfiddle demo

+1

这将画布转换为图像,但问题是将图像转换为画布。 – 2015-11-05 10:09:19

0
 <!DOCTYPE HTML> 
<html> 
    <head> 
    <style> 
     body { 
     margin: 0px; 
     padding: 0px; 
     } 
    </style> 
    </head> 
    <body> 
    <canvas id="myCanvas" width="578" height="200"></canvas> 
    <script> 
     var canvas = document.getElementById('myCanvas'); 
     var context = canvas.getContext('2d'); 

     // draw cloud 
     context.beginPath(); 
     context.moveTo(170, 80); 
     context.bezierCurveTo(130, 100, 130, 150, 230, 150); 
     context.bezierCurveTo(250, 180, 320, 180, 340, 150); 
     context.bezierCurveTo(420, 150, 420, 120, 390, 100); 
     context.bezierCurveTo(430, 40, 370, 30, 340, 50); 
     context.bezierCurveTo(320, 5, 250, 20, 250, 50); 
     context.bezierCurveTo(200, 5, 150, 20, 170, 80); 
     context.closePath(); 
     context.lineWidth = 5; 
     context.fillStyle = '#8ED6FF'; 
     context.fill(); 
     context.strokeStyle = '#0000ff'; 
     context.stroke(); 

     // save canvas image as data url (png format by default) 
     var dataURL = canvas.toDataURL(); 
    </script> 
    </body> 
</html>