最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - canvas drawImage fails - Stack Overflow

programmeradmin2浏览0评论

I'm fairly new to Canvas so please excuse if this is to simple. I want to resize images prior to upload if the browser supports this using canvas. However, this code

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);

fails with

NS_ERROR_NOT_AVAILABLE: Component is not available slice.call( docElem.childNodes, 0 )[0].nodeType;

in my test-browser Firefox. What could be wrong?

Update

Very strange: If I add a "alert(canvas);" as the 3rd last line (I do that sometimes for debugging, I know I could and should use console.log), the error does not appear, however, I still do not see anything from my image...

I'm fairly new to Canvas so please excuse if this is to simple. I want to resize images prior to upload if the browser supports this using canvas. However, this code

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);

fails with

NS_ERROR_NOT_AVAILABLE: Component is not available slice.call( docElem.childNodes, 0 )[0].nodeType;

in my test-browser Firefox. What could be wrong?

Update

Very strange: If I add a "alert(canvas);" as the 3rd last line (I do that sometimes for debugging, I know I could and should use console.log), the error does not appear, however, I still do not see anything from my image...

Share Improve this question edited Mar 28, 2013 at 10:42 Raphael Jeger asked Mar 28, 2013 at 10:21 Raphael JegerRaphael Jeger 5,26213 gold badges51 silver badges80 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 4

image need to be loaded to be drawn on canvas :

var img = new Image()
img.onload = function () {
     ctx.drawImage(img, 0, 0)
}
img.src="image.png"

in your exemple:

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])

If it's easier to you, you can load an image from your HTML:

<img id="imagetoload" src="myimage.jpg" />
<script>
    var image = document.getElementById("imagetoload");
</script>  

But the best way is to load them with javascript like Yukulélé said.

发布评论

评论列表(0)

  1. 暂无评论