我正在尝试使用 HTML5 引入图像文件,将其绘制到画布上,对其进行一些操作,然后返回 dataURL 以便我可以引用这个新生成的图像。
这是图像加载代码的示例:
<canvas id="myCanvas" style="border:1px solid #c3c3c3;">
Your browser does not support the canvas element.
</canvas>
<script type="text/javascript">
c = document.getElementById("myCanvas");
cxt = c.getContext("2d");
var img=new Image();
img.src = "http://www.google.com/images/srpr/logo3w.png";
//img.src = 'image/placemark.png';
img.onload = function() {
cxt.drawImage(img, 0, 0);
}
console.log(c.toDataURL());
</script>
因此,对于这样的代码, c.toDataURL() 的日志是一个空白画布,可能是因为log()
调用是在draw()
函数完成之前执行的。相反,如果我将该日志调用移到内部,则会draw()
收到 JavaScript 错误:SecurityError: The operation is insecure
相反,如果我使用本地图像并将其放入log
函数draw
中,我会在那里得到预期的输出 - 但函数外部仍然是空白画布
我想我的实际问题是:如何将外部图像加载到画布上,然后以某种方式修改它的内容?