![](/img/trans.png)
[英]Why does canvas.toDataURL() not produce the same base64 as in Ruby for an image?
[英]How to use canvas.toDataURL() to get base64 of image in Adobe AIR?
是否可以在Adobe AIR中使用canvas.toDataURL()
?
當我嘗試時,我收到以下錯誤:
錯誤: SECURITY_ERR:DOM異常18
Adobe AIR對canvas API中使用的圖像強制執行相同的原點。 一旦您在畫布中使用了來自其他域的內容,就無法從中獲取像素數據。 但是,您可以使用Loader類來獲取像素數據,並將其轉換為畫布ImageData。
例如:
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.