Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Uncaught SecurityError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tainted by cross-origin data

I am getting this error in Chrome and Opera Browsers:

Uncaught SecurityError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tainted by cross-origin data.

The code is working fine in Internet Explorer, Mozilla Firefox, and Safari. But I need to fix it in Chrome and Opera. Please help me to find a solution to fix this problem?

I am getting this error at this line

imgData = ctx.getImageData(x1,y1,w,h);
like image 514
Rakesh Avatar asked Nov 01 '14 10:11

Rakesh


2 Answers

May be this will help, as you have mentioned cross origin so try this,

 var UimageObj = new Image();

crossOrigin has to be set to enable the canvas data to be saved.The source image should have access-control-allow-origin set to * or a chosen domain

UimageObj.crossOrigin = 'anonymous';   // crossOrigin attribute has to be set before setting src.If reversed, it wont work.  
UimageObj.src = obj_data.srcUser;

Hope it helps.

like image 73
Aameer Avatar answered Nov 15 '22 05:11

Aameer


When you load your html file from disk using: file://path/to/your/file.html, then Google Chrome and Opera will raise error at line including: imgData = ctx.getImageData(x1,y1,w,h);

Solution is simple: start web server (apache, nginx) put your html file somewhere at web server and load your html file from: http://localhost/somewhere/file.html

like image 23
JiriHnidek Avatar answered Nov 15 '22 05:11

JiriHnidek