首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >画布drawImage失败

画布drawImage失败
EN

Stack Overflow用户
提问于 2013-03-28 10:21:40
回答 2查看 5.2K关注 0票数 0

我对画布很陌生,所以请原谅,如果这是简单的话。如果浏览器支持使用画布,我希望在上传之前调整图像的大小。但是,这个代码

代码语言:javascript
复制
var img = document.createElement("img");
var reader = new FileReader();  
    reader.onload = function(e) {img.src = e.target.result};
var files = event.target.files;
    reader.readAsDataURL(files[0]);
var canvas = document.createElement('canvas');
    canvas.width = 100;
    canvas.height = 100;
var ctx = canvas.getContext("2d");
    ctx.drawImage(img, 0, 0);

失败与

NS_ERROR_NOT_AVAILABLE:组件不可用slice.call( docElem.childNodes,0 ).nodeType;

在我的测试浏览器Firefox中。有什么不对的?

更新

非常奇怪:如果我添加了一个“警报(画布)”;作为第三行(我有时是为了调试,我知道我可以也应该使用console.log),错误不会出现,但是,我仍然没有从我的图像中看到任何东西……

EN

回答 2

Stack Overflow用户

发布于 2013-03-28 10:50:48

需要加载图像才能在画布上绘制:

代码语言:javascript
复制
var img = new Image()
img.onload = function () {
     ctx.drawImage(img, 0, 0)
}
img.src="image.png"

在你的例子中:

代码语言:javascript
复制
var img = document.createElement("img")
var reader = new FileReader()

var canvas = document.createElement('canvas')
canvas.width = 100
canvas.height = 100
var ctx = canvas.getContext("2d")

reader.onload = function(e) {
    var img = new Image()
    img.onload = function () {
        ctx.drawImage(img, 0, 0)
    }
    img.src = e.target.result
}

var files = event.target.files
reader.readAsDataURL(files[0])
票数 4
EN

Stack Overflow用户

发布于 2013-03-28 15:27:02

如果对您来说更容易,您可以从HTML加载一个图像:

代码语言:javascript
复制
<img id="imagetoload" src="myimage.jpg" />
<script>
    var image = document.getElementById("imagetoload");
</script>  

但最好的方法是像Yukulélé说的那样,用javascript装载它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15679299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档