hai l'idea giusta, e che funzionerà in casi molto semplici, come ad esempio:
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/
ma diventa problematico se si dispone di "sporcato" la tela. Questo viene fatto disegnando immagini sulla tela che provengono da un'origine diversa. Ad esempio, se la tua tela è ospitata su www.example.com e utilizzi immagini da www.wikipedia.org, il flag di origine dell'originale della tua tela è impostato su false
internamente.
Una volta che la bandiera origine da pulire è impostato su false
, voi non sono più autorizzati a chiamare toDataURL
o getImageData
Tecnicamente, le immagini sono della stessa origine se i domini, i protocolli e le porte corrispondono.
Se si sta lavorando a livello locale (file: //) allora ogni immagine disegnata farà scattare la bandiera. Ciò rende fastidioso il debugging, ma con Chrome puoi avviarlo con la flag --allow-file-access-from-files
per consentire ciò.
fonte
2013-04-30 14:03:34
Guardate questa risposta. http://stackoverflow.com/questions/7279438/why-is-this-todataurl-line-a-security-error –
questo non ha nulla a che fare con la query – shabunc
Nel caricamento dell'immagine canvas da altro dominio in modo da dare errore, quando l'immagine non caricare nella tela funziona bene per me. – mmpatel009