Вы имеете право идея, и она будет работать в очень простых случаях, таких как:
var can = document.getElementById('canvas1');
var ctx = can.getContext('2d');
ctx.fillRect(50,50,50,50);
var img = new Image();
img.src = can.toDataURL();
document.body.appendChild(img);
http://jsfiddle.net/simonsarris/vgmFN/
Но это становится проблематичным, если у вас есть «загадили» холст. Это делается путем рисования изображений на холсте, которые имеют другое происхождение. Например, если ваш холст размещен на веб-сайте www.example.com, и вы используете изображения с сайта www.wikipedia.org, тогда ваш флаг «Исходный чистый» холста будет установлен внутри false
. не
После того, как флаг происхождения очищаемые установлен в false
, вы больше не разрешили позвонить toDataURL
или getImageData
Технически, изображения одного и того же происхождения, если совпадают домены, протоколы и порты.
Если вы работаете локально (файл: //), то на любом обратном изображении будет установлен флаг. Это делает отладку раздражающей, но с Chrome вы можете запустить ее с флагом --allow-file-access-from-files
, чтобы это разрешить.
Посмотрите на этот ответ. http://stackoverflow.com/questions/7279438/why-is-this-todataurl-line-a-security-error –
Это не имеет никакого отношения к запросу – shabunc
В загружаемом изображении холста из другого домена, поэтому он дает ошибку, когда изображение не загружайте в холст, он отлично работает для меня. – mmpatel009