青草久久影院-青草久久伊人-青草久久久-青草久久精品亚洲综合专区-SM双性精跪趴灌憋尿调教H-SM脚奴调教丨踩踏贱奴

17站長網

17站長網 首頁 編程教程 Html5教程 查看內容

HTML5 Canvas 像素處理

html5 Canvas 像素處理的createImageData()函數使用方法,在線實例演示canvas像素處理,將像素復制到畫布上,如何使用語法定義及它的屬性值詳細資料等。

可以訪問html5畫布的各個像素。您可以使用ImageData對象來執行此操作。該ImageData對象包含一個像素數組。通過訪問此數組,您可以操縱像素。完成像素操作后,需要將像素復制到畫布上以顯示它們。

創建一個ImageData對象

創建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);

函數 的width和height屬性createImageData()設置由所ImageData 創建對象表示的像素區域的寬度和高度(以像素為單位)。上面的示例創建了一個ImageData具有100 x 100像素面積的對象。

ImageData屬性

該ImageData對象具有三個屬性:

  • width

  • height

  • data

width和height屬性包含所述圖形數據區的寬度和高度。
該data屬性是一個包含像素值的字節數組。

像素處理

 data數組 中的每個像素均包含4個字節的值。紅色,綠色和藍色為一個值,alpha通道為一個值。像素的顏色是通過將紅色,綠色和藍色混合在一起以構成最終顏色來確定的。Alpha通道說明像素的透明度。紅色,綠色,藍色和Alph值中的每一個都可以采用0到255之間的值。
這是一個設置第一個像素的顏色和Alpha值的代碼示例:

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];

要訪問后續像素的pixelIndex值,請將其值增加4(每個像素由4個數組元素組成,如上所示)。
您可以像這樣計算給定像素的索引:

 var index = 4 * (x + y * width);

的x和y在計算中是x和像素的y坐標來計算的索引。data陣列中的像素被組織為一個長像素序列,從左上方的像素開始,垂直向右移動。當到達行尾時,像素序列從下面一行的最左邊的像素繼續。因此,要計算位于x處的像素的索引,您需要將y坐標乘以每行的像素數,然后將x值添加到其中。
這是說明20像素寬和8像素高的ImageData像素陣列的圖。在右邊距中列出了每行像素的索引。如您所見,索引的枚舉從左上角的0開始,向右增加。到達線條的邊緣時,枚舉從下面線條的最左像素繼續,并向右繼續。


HTML5 Canvas 像素處理



ImageData像素網格-20 x 8像素網格。像素從左上角向右索引,線下向下。


將像素復制到畫布上

完成像素處理后,可以使用2D上下文功能將其復制到畫布上putimageData()。的有兩個版本putimageFunction()。該putimageData() 函數的第一個版本將所有像素復制到畫布上。這是一個示例:

var canvasX = 25;
var canvasY = 25;
 
context.putimageData(imageData, canvasX, canvasY);

canvasX和canvasY參數是x和的畫布上何處插入的像素的y坐標。
該putimageData()函數的第二個版本可以將像素的矩形而不是所有像素復制到畫布上。這是一個代碼示例:

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參數(sourceX和sourceY)是x和矩形的左上角的y坐標,以從像素陣列復制。
sWidth和sHeight參數(sourceWidth和sourceHeight)是該矩形的寬度和高度,以從像素陣列復制。

從canvas中獲取像素

也可以從畫布上將一個像素矩形捕獲到一個ImageData對象中。這是使用getimageData()函數完成的。這是一個示例:

var x      =  25;
var y      =  25;
var width  = 100;
var height = 100;
var imageData2 = context.getimageData(x, y, width, height);

x和y參數是從畫布矩形的左上角搶的坐標。
的width和height參數是從畫布矩形以搶的寬度和高度。

返回頂部
主站蜘蛛池模板: 精品欧美一区二区三区久久久 | 超碰在线视频公开 | 男女牲交大战免费播放 | 欧美亚洲另类图片 | 亚洲AV无码一区二区色情蜜芽 | 久久综合给合久久狠狠狠… | 久久伦理影院 | Zoofilivideo人馿交| 亚洲成人免费在线观看 | 在线视频中文字幕 | 护士喂我吃乳液我脱她内裤 | 57PAO强力打造高清免费 | 超碰在线视频人人AV | 老太婆性BBWBBW | 被窝国产理论一二三影院 | 国产精品九九久久 | 理论片午午伦夜理片2021 | 麻豆精品乱码WWW久久密 | 欧美人与禽ZOZO性伦交视频 | FREEHDXXXX学生妹| 亚洲XXX午休国产熟女屁 | 少妇厨房愉情理9伦片视频 少妇被躁爽到高潮无码久久 | 久久看片网 | 亚洲蜜桃AV永久无码精品放毛片 | 国产精品一久久香蕉国产线看 | 啊…嗯啊好深男男小黄文 | 色偷偷超碰97人人澡人人 | 亚洲AV香蕉一区区二区三区蜜桃 | 国产精品欧美一区二区在线看 | 亚洲 自拍 欧洲 视频二区 | 99re久久热在线视频 | 99精品国产AV一区二区麻豆 | 芭乐视频网页版在线观看 | 亚洲黄色片免费看 | 丰满的女友1在线观看 | 伊人青青久久 | 江苏电台在线收听 | 十次啦中文网 | 超碰高清熟女一区二区 | 香蕉鱼视频观看在线视频下载 | 野花韩国高清完整版在线观看5 |