一 定義和用法
getImageData()方法返回 ImageData 對象,該對象拷貝了畫布指定矩形的像素數據。
注意:ImageData對象不是圖像,它規定了畫布上一個部分(矩形),并保存了該矩形內每個像素的信息。
對于ImageData對象中的每個像素,都存在著四方面的信息,即RGBA值:
A - alpha 通道(0-255; 0 是透明的,255 是完全可見的)
color/alpha 信息以數組形式存在,并存儲于 ImageData 對象的 data 屬性中。
提示:在操作完成數組中的 color/alpha 信息之后,您可以使用 putImageData() 方法將圖像數據拷貝回畫布上。
二 代碼
<!DOCTYPE html><html><head> <meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" /> <meta http-equiv="Content-Type" content="text/html; charset=GBK" /> <title> 改變透明度 </title></head><body><h2> 改變透明度 </h2><canvas id="mc" width="600" height="460" style="border:1px solid black"></canvas><script type="text/javascript"> // 獲取canvas元素對應的DOM對象 var canvas = document.getElementById('mc'); // 獲取在canvas上繪圖的CanvasRenderingContext2D對象 var ctx = canvas.getContext('2d'); var image = new Image(); image.src = "test.png"; image.onload = function() { // 用帶透明度參數的方法繪制圖片 drawImage(image , 124 , 20 , 0.4); } var drawImage = function(image , x , y , alpha) { // 繪制圖片 ctx.drawImage(image , x , y); // 獲取從x、y開始,寬為image.width、高為image.height的圖片數據 // 也就是獲取繪制的圖片數據 var imgData = ctx.getImageData(x , y , image.width , image.height); for (var i = 0 , len = imgData.data.length ; i < len ; i += 4 ) { // 改變每個像素的透明度 imgData.data[i + 3] = imgData.data[i + 3] * alpha; } // 將獲取的圖片數據放回去。 ctx.putImageData(imgData , x , y); }</script></body></html>
三 運行結果
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答