tainted not may htmlcanvaselement from failed exported data canvases javascript air html5-canvas base64

javascript - may - todataurl is not a function



¿Cómo usar canvas.toDataURL() para obtener base64 de imagen en Adobe AIR? (1)

¿Es posible usar canvas.toDataURL() en Adobe AIR?

Cuando lo intento, aparece el siguiente error:

Error: SECURITY_ERR: DOM Exception 18


Adobe AIR impone el mismo origen para las imágenes utilizadas en la API de lienzo. Una vez que haya utilizado algo de otro dominio en su lienzo, no podrá recuperar datos de píxeles. Sin embargo, puede hacer uso de la clase Loader para obtener los datos de píxeles y convertirlos en un lienzo ImageData.

Por ejemplo:

function getDataURL(url, callback) { var loader = new air.Loader(); loader.contentLoaderInfo.addEventListener(air.Event.COMPLETE, function(event) { var bitmapData = loader.content.bitmapData; var canvas = document.createElement(''canvas''); canvas.width = bitmapData.width; canvas.height = bitmapData.height; var context = canvas.getContext(''2d''); var imageData = context.createImageData(canvas.width, canvas.height); var dst = imageData.data; var src = bitmapData.getPixels(bitmapData.rect); src.position = 0; var i = 0; while (i < dst.length) { var alpha = src.readUnsignedByte(); dst[i++] = src.readUnsignedByte(); dst[i++] = src.readUnsignedByte(); dst[i++] = src.readUnsignedByte(); dst[i++] = alpha; } context.putImageData(imageData, 0, 0); callback(canvas.toDataURL()); }); loader.load(new air.URLRequest(url)); } window.addEventListener(''load'', function() { getDataURL(''http://www.google.com/images/logo.gif'', function(dataURL) { air.trace(dataURL); }); }, false);