0
我有下面的代碼這樣做:在圖像上使用「getImageData(...)」(或類似)的方法?
img = new Image();
img.src = document.getElementById("input").value;
img.onload = function(){
console.log("loaded");
c.height = img.height;
c.width = img.width;
dimensions =[img.width,img.height];
ctx.drawImage(img,0,0,img.width,img.height);
imageData = ctx.getImageData(0,0,img.width,img.height).data;
ctx.clearRect(0,0,c.width,c.height);
};
然而,谷歌瀏覽器,它拋出的錯誤Uncaught SecurityError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tainted by cross-origin data.
不僅如此,它是做一個簡單的動作非常複雜的方式。任何更好的方法來做到這一點?如果沒有,幫助錯誤?
我想知道每一個像素精確的色彩。正如我想要一個RGB或每個像素的十六進制,如ctx.getImageData()所做的那樣。 – Fuzzyzilla
那麼在這種情況下,它絕對看起來你最好是修復安全警告,而不是在這裏發明輪子。爲了解決安全問題,請嘗試加載圖像,使用filreader獲取二進制數據/ blob,將其放入新圖像並根據此圖像製作畫布。我懷疑瀏覽器將無法確定它來自哪裏。 – 2015-09-06 00:49:42
謝謝。我從來沒有見過這樣的代碼。你能鏈接或爲學習目的解釋嗎? – Fuzzyzilla