我想将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>

在Chrome 8中,我得到了错误:Uncaught TypeError: Type error

在Firefox的Firebug中,这是这样的:"对象的类型与与该对象关联的参数的预期类型不兼容"代码:""17"

在Base64中是5x5px黑色PNG正方形,这是我在GIMP中制作的,并在GNU/Linux的程序Base64中将其转换为Base64.

推荐答案

从外观上看,您实际上需要传递一个图像对象,如下所示

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";
<canvas id="c"></canvas>

我在chrome上试用过,效果很好.

Html相关问答推荐

如何获得一个背景图像,不是模糊的内部容器,但模糊的外部'

在 Select 前后更改选项卡的背景

损坏的可点击html邮箱签名

Angular 分量被循环

HTML+CSS+JS动态选中文本高亮 colored颜色 变化

在iOS中调整HTML邮箱内容的大小

如何使用CSS在NSAttributedString中为HTML文本中的图像制作覆盖图

在css中,如何在英雄版块的标题后面做一个粘性的导航栏?

有没有一种方法可以很容易地将这个div从底部:0转换到顶部:0?

如何使div填充父项的剩余高度

HX-POST未使用正确的操作(路径)

如何设计缠绕锚点元素的样式?

有没有一种方法可以提高代码中tailwind 类名的可读性?

jQuery 索引返回不正确的结果

实验的响应式屏幕尺寸

如何使用jQuery将我制作的通用头部和底部加载到多个HTML文件中?

HTML画布放大/缩小算法与CSS(图像处理)

项目的水平列表:倒数第二个项目居中,而最后一个项目占据所有剩余空间

按部分划分的表行带

具有淡入/淡出效果的 CSS 选框