My problem:
I’m making an HTML5 game and am attempting to make it faster by drawing the background once instead of having it redrawn every frame.
To do this I drew the background on the canvas and then attempted to get an ImageData from it. Unfortunately I was stopped by a Security Error. Unable to, because the image is from an external source.
I’ve researched this and it seems that this is a “feature” to stop bad people from stealing content from the user’s hard drive. Though these images I loaded aren’t from the hard drive.
I would really love to be able to speed up my game. Is there a solution to go around the security error or maybe even to load the image directly into an image data so I can draw by looping through pixels?
(Note: I do not want to have to mess with multiple canvases to get the job done)
Thanks, Gan
There is no way around that, though you can draw an image from another domain the use of
getImageDatawill always raise a security error in that situation. That is to prevent stealing of sensitive information since web sites can generate dynamic images containing private user information based on cookies or IP address. However, you could simply use a server side script to proxy the image.But honestly
getImageDataandputImageDataare fairly slow, I don’t see how that could speed up your game. It seems to me that you think drawing an image data is faster than simply usingdrawImage, it’s not.You will have to redraw everything if you want your animation to look good anyway, that’s the way animation works.