根据64字符串绘制画布图片时出错
Error when drawing Canvas Picture from base 64 String
我想在画布中绘制一个base64字符串,但我总是得到错误
TypeError:CanvasRenderingContext2D.drawImage的参数1无法转换为以下任何一个:HTMLImageElement、HTMLCanvasElement、HTMLVideoElement。
我确实在谷歌上搜索过,但我仍然不知道自己做错了什么。
var canvas = document.createElement('canvas');
document.body.appendChild(canvas);
var ctx = canvas.getContext("2d");
var data = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oMCRUiMrIBQVkAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAADElEQVQI12NgoC4AAABQAAEiE+h1AAAAAElFTkSuQmCC";
ctx.drawImage(data, 0, 0);
这是一把小提琴。
drawImage
期望其第一个参数是图像、视频或画布(即HTMLImageElement
、HTMLVideoElement
或HTMLCanvasElement
),而不是字符串。
您需要构造一个新的图像,然后为该新图像对象提供base64源。加载图像后,您可以将图像添加到画布中:
var img = new Image();
img.src = "data:image/png;base64,iVBORw0KGgoAAAANSUh...";
img.onload = function() {
ctx.drawImage(img, 0, 0);
}
此解决方案是最好的
- 方法:FileReader获取
https://stackoverflow.com/a/20285053/296373
相关文章:
- 在Shopify中获取博客文章的图片
- 图片照片库
- javascript中的数组出错
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 知道为什么我的旋转木马不会自动更改图片吗
- PHP AJAX图片上传示例不上传
- 在Meteor项目中安装并包含npm模块后出错
- 解析JSON并从中删除对象会出错
- AngularJS指令出错-无法读取属性'编译'的未定义
- 如何使用input-tage上传图片并查看在laravel中上传的文件预览
- 使用javascript在MVC中查找网格长度时出错
- 尝试调用AngularJS上的函数时出错
- 在我的网站上显示最近提交的文章/图片
- 如何更改拉斐尔元素图片
- Google 脚本:用于创建日历活动的脚本运行时不会出错,但不会执行任何操作
- joomla添加了更改图片的javascript
- '图片'没有用于本机道具的propType'RCTImageView.overlayColor&
- 显示某个用户ID的某个标签的30张Instagram图片
- 用JavaScript/jQuery点击图片,选中多个方框
- 根据64字符串绘制画布图片时出错