是否有使用HTML5/JS 例如任何圖像轉換爲二維矩陣如何使用JavaScript/HTML5
picture.jpg -------be Converted to -----> matrice[W][H] of pixels
是否有使用HTML5/JS 例如任何圖像轉換爲二維矩陣如何使用JavaScript/HTML5
picture.jpg -------be Converted to -----> matrice[W][H] of pixels
不幸的原因,是難以解釋的Javascript代碼的任何解決方案沒有得到圖像矩陣二維允許讀取圖像的像素,除非圖像來自已從其下載Javascript的相同服務器。
即使圖像是公開的,整個互聯網都可以在不提供憑據的情況下下載它...整個世界都可以,但是由於安全原因(!)您的頁面無法訪問。避免這種限制的一個技巧是編寫一個服務器端部分,代表您的圖像。
如果圖像是允許您閱讀的圖像,那麼您可以創建一個畫布,在其上繪製圖像,然後讀取像素。
var c = document.createElement("canvas");
c.width = img.width;
c.height = img.height;
var ctx = c.getContext("2d");
ctx.drawImage(img, 0, 0);
var idata = c.getImageData(0, 0, img.width, img.height);
//
// here idata.data[(y*img.width + x)*4] is the red value
// of pixel (x, y), followed by green, blue and alpha
//
好吧,我會嘗試這一個 – 2013-02-16 13:51:56
感謝您的解釋,但如何can'i獲得二維矩陣? – 2013-02-16 14:06:44
@AHmédNet:'idata.data'包含所有顏色,但它是一維數組(Javascript沒有多維數組)。每個像素(r,g,b和alpha)有4個字節,所以要訪問需要計算的數組作爲索引'(y * width + x)* 4 + c',其中'c'是組件(紅色= 0,綠色= 1,藍色= 2,alpha = 3)。 – 6502 2013-02-16 16:14:13
正如其他人所指出的,您可以使用畫布元素來完成此操作。我會發佈一個JSFiddle,除了這種技術只適用於與頁面託管在同一個域中的圖像(除非圖像是cross-origin enabled)...並且JSFiddle似乎沒有託管任何合適的圖像供示例使用。所以這是我用來測試的代碼:
// Get a reference to the image you want the pixels of and its dimensions
var myImage = document.getElementById('theImageToWorkWith');
var w = myImage.width, h = myImage.height;
// Create a Canvas element
var canvas = document.createElement('canvas');
// Size the canvas to the element
canvas.width = w;
canvas.height = h;
// Draw image onto the canvas
var ctx = canvas.getContext('2d');
ctx.drawImage(myImage, 0, 0);
// Finally, get the image data
// ('data' is an array of RGBA pixel values for each pixel)
var data = ctx.getImageData(0, 0, w, h);
詳細瞭解canvas pixel manipulation。 您可能還想驗證您關心的瀏覽器上的canvas tag is supported。
我會得到一個矩陣圖片,例如:T [0] [0] = 255,T [0] [1] = 283這些是顏色值 – 2013-02-16 14:20:18
您必須構建該數據結構你自己從getImageData()返回的平面數組。此外,請注意,您的問題意味着您認爲每個像素只有一個字節,但情況並非如此 - 有4個字節(紅色,綠色,藍色和Alpha通道)。 – broofa 2013-02-16 18:36:04
我真的不明白你的問題,對不起。你能否再添加一些細節? – qben 2013-02-16 13:40:53
也許你正在尋找類似的東西? http://www.html5rocks.com/en/tutorials/canvas/imagefilters/。 – 2013-02-16 13:42:46
謝謝。我現在明白你的答案。 :) – qben 2013-02-16 13:53:45