html5 Canvas 像素處理的createImageData()函數(shù)使用方法,在線實例演示canvas像素處理,將像素復(fù)制到畫布上,如何使用語法定義及它的屬性值詳細資料等。 可以訪問html5畫布的各個像素。您可以使用ImageData對象來執(zhí)行此操作。該ImageData對象包含一個像素數(shù)組。通過訪問此數(shù)組,您可以操縱像素。完成像素操作后,需要將像素復(fù)制到畫布上以顯示它們。 創(chuàng)建一個ImageData對象創(chuàng)建ImageData對象是使用2D上下文功能完成的 createImageData()。這是一個示例: var canvas = document.getElementById("ex1");var context = canvas.getContext("2d");
var width = 100;
var height = 100;
var imageData = context.createImageData(width, height);函數(shù) 的width和height屬性createImageData()設(shè)置由所ImageData 創(chuàng)建對象表示的像素區(qū)域的寬度和高度(以像素為單位)。上面的示例創(chuàng)建了一個ImageData具有100 x 100像素面積的對象。 ImageData屬性該ImageData對象具有三個屬性:
width和height屬性包含所述圖形數(shù)據(jù)區(qū)的寬度和高度。 像素處理 data數(shù)組 中的每個像素均包含4個字節(jié)的值。紅色,綠色和藍色為一個值,alpha通道為一個值。像素的顏色是通過將紅色,綠色和藍色混合在一起以構(gòu)成最終顏色來確定的。Alpha通道說明像素的透明度。紅色,綠色,藍色和Alph值中的每一個都可以采用0到255之間的值。 var pixelIndex = 0; imageData.data[pixelIndex ] = 255; // red color imageData.data[pixelIndex + 1] = 0; // green color imageData.data[pixelIndex + 2] = 0; // blue color imageData.data[pixelIndex + 3] = 255; 請用以下代碼讀取像素值: var pixelIndex = 0; var red = imageData.data[pixelIndex ]; // red color var green = imageData.data[pixelIndex + 1]; // green color var blue = imageData.data[pixelIndex + 2]; // blue color var alpha = imageData.data[pixelIndex + 3]; 要訪問后續(xù)像素的pixelIndex值,請將其值增加4(每個像素由4個數(shù)組元素組成,如上所示)。 var index = 4 * (x + y * width); 的x和y在計算中是x和像素的y坐標(biāo)來計算的索引。data陣列中的像素被組織為一個長像素序列,從左上方的像素開始,垂直向右移動。當(dāng)?shù)竭_行尾時,像素序列從下面一行的最左邊的像素繼續(xù)。因此,要計算位于x處的像素的索引,您需要將y坐標(biāo)乘以每行的像素數(shù),然后將x值添加到其中。
將像素復(fù)制到畫布上完成像素處理后,可以使用2D上下文功能將其復(fù)制到畫布上putimageData()。的有兩個版本putimageFunction()。該putimageData() 函數(shù)的第一個版本將所有像素復(fù)制到畫布上。這是一個示例: var canvasX = 25; var canvasY = 25; context.putimageData(imageData, canvasX, canvasY); canvasX和canvasY參數(shù)是x和的畫布上何處插入的像素的y坐標(biāo)。 var canvasX = 25; var canvasY = 25; var sx = 0; var sy = 0; var sWidth = 25; var sHeight = 25; context.putimageData(imageData, canvasY, sx, sy, sWidth, sHeight); sx和sy參數(shù)(sourceX和sourceY)是x和矩形的左上角的y坐標(biāo),以從像素陣列復(fù)制。 從canvas中獲取像素也可以從畫布上將一個像素矩形捕獲到一個ImageData對象中。這是使用getimageData()函數(shù)完成的。這是一個示例: var x = 25; var y = 25; var width = 100; var height = 100; var imageData2 = context.getimageData(x, y, width, height); x和y參數(shù)是從畫布矩形的左上角搶的坐標(biāo)。 |