Tom*_*nal 77 html5 base64 png canvas
我想将Base64编码的PNG图像加载到canvas元素.我有这个代码:
<html>
<head>
</head>
<body>
<canvas id="c"></canvas>
<script type="text/javascript">
var canvas = document.getElementById("c");
var ctx = canvas.getContext("2d");
data = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oMCRUiMrIBQVkAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAADElEQVQI12NgoC4AAABQAAEiE+h1AAAAAElFTkSuQmCC";
ctx.drawImage(data, 0, 0);
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在Chrome 8中,我收到错误消息: Uncaught TypeError: Type error
在Firefox的Firebug中:"对象的类型与对象关联的参数的预期类型不兼容"代码:"17"
在那个base64中是我在GIMP中制作的5x5px黑色PNG方块,并在GNU/Linux程序base64中将其转换为base64.
小智 152
通过它的外观,你需要实际传递drawImage像这样的图像对象
var canvas = document.getElementById("c");
var ctx = canvas.getContext("2d");
var image = new Image();
image.onload = function() {
ctx.drawImage(image, 0, 0);
};
image.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oMCRUiMrIBQVkAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAADElEQVQI12NgoC4AAABQAAEiE+h1AAAAAElFTkSuQmCC";Run Code Online (Sandbox Code Playgroud)
<canvas id="c"></canvas>Run Code Online (Sandbox Code Playgroud)
我在chrome中尝试过它并且工作正常.
Joh*_*ohn 13
Jerryf的答案很好,除了一个缺陷.
应该在src之前设置onload事件.有时src可以立即加载,永远不会触发onload事件.
(就像Totty.js指出的那样.)
var canvas = document.getElementById("c");
var ctx = canvas.getContext("2d");
var image = new Image();
image.onload = function() {
ctx.drawImage(image, 0, 0);
};
image.src = "data:image/ png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oMCRUiMrIBQVkAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAADElEQVQI12NgoC4AAABQAAEiE+h1AAAAAElFTkSuQmCC";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100702 次 |
| 最近记录: |