欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > HTML5邊玩邊學(3)像素和顏色

HTML5邊玩邊學(3)像素和顏色

熱門標簽:地圖標注自己去過的地方 高德地圖標注錯誤怎么修改 平頂山電子地圖標注怎么修改 搜狗星級酒店地圖標注 會聲會影怎樣做地圖標注效果 江蘇高頻外呼系統線路 洛陽市伊川縣地圖標注中心官網 標準智能外呼系統 電銷機器人視頻

一、理解顏色

我們在電腦屏幕上可以看到色彩斑斕的圖像,其實這些圖像都是由一個個像素點組成的。那么像素是什么?顏色又是什么呢?(如果您提出這兩個問題,您一定是個熱愛思考的人)一個像素其實對應著內存中的一組連續的二進制位,由于是二進制位,每個位上的取值當然只能是 0 或者 1 了!這樣,這組連續的二進制位就可以由 0 ,1 排列組合出很多種情況,而每一種排列組合就決定了這個像素的一種顏色。先看看下面這幅圖

聲明:為本文為原創文章,作者保留所有權利!歡迎轉載,轉載請注明作者左洸和出處博客園

 

我們可以看到這幅圖描述了六個像素點,一共由24個小方框組成。

注意:圖中的一個小方框代表一個字節,即8個二進制位。

因此,每個像素點由四個字節組成。圖中也分別標出了這四個字節代表的含義:

第一個字節決定像素的紅色值

第二個字節決定像素的綠色值

第三個字節決定像素的藍色值

第四個字節決定像素的透明度值

每一種分顏色值的大小是從 0 到 255(提問:為什么只能到255?) ,透明度的取值:0 代表完全透明,255代表完全不透明

這樣,我們就可以用(255,0,0,255)來表示一個純紅色像素

在內存中,他是這樣的一個32位的串: 11111111 00000000 00000000 11111111

 

二、操作像素

了解了顏色和像素的實質,我們就可以對圖形進行更加復雜的處理。

可是,HTML5 目前還沒有提供類似 setPixel 或者 getPixel 這樣直接操作像素點的方法, 但是我們也有辦法

就是使用 ImageData 對象:

ImageData對象用來保存圖像像素值,它有 width、height和 data 三個屬性,其中 data 屬性就是一個連續數組,圖像的所有像素值其實是保存在 data 里面的。

data 屬性保存像素值的方法和我們在前面圖片中看到的一模一樣:

imageData.data[index*4 +0]

imageData.data[index*4 +1]

imageData.data[index*4 +2]

imageData.data[index*4 +3]

上面取出了 data 數組中連續相鄰的四個值,這四個值分別代表了圖像中第 index+1 個像素的紅色、綠色、藍色和透明度值的大小。

注意index 從0 開始,圖像中總共有 width * height 個像素,數組中總共保存了 width * height * 4 個數值

 

上下文對象 Context 有三個方法用來創建、讀取和設置 ImageData 對象,他們分別是

createImageData(width, height):在內存中創建一個指定大小的 ImageData 對象(即像素數組),對象中的像素點都是黑色透明的,即rgba(0,0,0,0)

getImageData(x, y, width, height):返回一個 ImageData 對象,這個 IamgeData 對象中包含了指定區域的像素數組

putImageData(data, x, y):將 ImageData 對象繪制到屏幕的指定區域上

 

三、一個簡單的圖像處理例子

上面說了這么多,我們用了解的知識來玩玩圖像編程,或許有一天我們就要在 Chrome 中玩 PhotoShop 了。

程序大概是這個樣子的:

1、將一幅圖片繪制到一個 canvas 元素上,為了不引發安全錯誤(Security_ERR:DOM EXCEPTION 18),我用的是我博客頂部的橫幅背景圖片。你要運行這個例子,可能需要改成自己的圖片

2、有四個滑動條,分別代表 GRBA 四個分量

3、拖動滑動條,圖像中對應的顏色分量就會增加或者減少

4、如果圖像變成透明,就會顯示 canvas 元素的背景,我把這個背景設置成了我的頭像,呵呵。

思路:其實就是用 getImageData 方法,將你想改變的那一塊區域的像素數組取出來,然后根據你拖動的滑動條和滑動條的數值,來更改那一塊區域里所有像素對應顏色分量的值。處理完畢后再用 putImageData 方法繪制到畫布上,就是這么簡單。

下面是代碼:

簡單的圖像處理

復制代碼
代碼如下:

<canvas id="test1" width="507" height="348" style="background-image:url(http://images.cnblogs.com/cnblogs_com/myqiao/262115/r_2204793492575248335.jpg)">你的瀏覽器不支持 &lt;canvas&gt;標簽,請使用 Chrome 瀏覽器 或者 FireFox 瀏覽器</canvas>
紅色:<input type="range" min="1" max="100" onchange="colorChange(event,0)"/>
綠色:<input type="range" min="1" max="100" onchange="colorChange(event,1)"/>
藍色:<input type="range" min="1" max="100" onchange="colorChange(event,2)"/>
透明:<input type="range" min="1" max="100" onchange="colorChange(event,3)"/>
<script type="text/javascript">
//獲取上下文對象
var canvas = document.getElementById("test1");
var ctx = canvas.getContext("2d");
//畫布的寬度和長度
var width = parseInt(canvas.getAttribute("width"));
var height = parseInt(canvas.getAttribute("height"));
//裝入圖像
var image = new Image();
image.onload =imageLoaded;
//頂部背景圖片
image.src = "/skins/Valentine/images/banner2.gif";
//用來保存像素數組的變量
var imageData=null;
function imageLoaded() {
// 將圖片畫到畫布上
ctx.drawImage(image, 0, 0);
//取圖像的像素數組
imageData = ctx.getImageData(0, 0, width, height);
}
function colorChange(event,offset){
imageLoaded();
for (var y = 0; y < imageData.height; y++) {
for (x = 0;x < imageData.width; x++) {
//index 為當前要處理的像素編號
var index = y * imageData.width + x;
//一個像素占四個字節,即 p 為當前指針的位置
var p = index * 4;
//改變當前像素 offset 顏色分量的數值,offset 取值為0-3
var color = imageData.data[p + offset] * event.target.value / 50;
// 顏色值限定在[0..255]
color = Math.min(255, color);
//將改變后的顏色值存回數組
imageData.data[p + offset]=color
}
}
//輸出到屏幕
ctx.putImageData(imageData, 0, 0);
}
</script>

演示效果:

提示:您可以先修改部分代碼再運行
 

四、繪制隨機顏色的點

這個例子是在畫布上隨機選擇一個點,然后再給他一個隨機的顏色值,其實用到的方法和上面的例子大同小異,就是需求不同罷了。

下面是代碼和程序實例:
隨機顏色的點

復制代碼
代碼如下:

<canvas id="test2" width="300" height="300" style=" background-color: black">你的瀏覽器不支持 &lt;canvas&gt;標簽,請使用 Chrome 瀏覽器 或者 FireFox 瀏覽器</canvas>
<input type="button" value="畫隨機點" onclick="interval=setInterval(randomPixel,1);" />
<input type="button" value="停止" onclick="clearInterval(interval);"/>
<input type="button" value="清除" onclick="clearCanvas();"/>
<script type="text/javascript">
//獲取上下文對象
var canvas = document.getElementById("test2");
var ctx = canvas.getContext("2d");
//畫布的寬度和長度
var width = parseInt(canvas.getAttribute("width"));
var height = parseInt(canvas.getAttribute("height"));
var imageData = ctx.createImageData(width, height);
function randomPixel(){
var x= parseInt(Math.random()*width);
var y= parseInt(Math.random()*height);
var index = y * width + x;
var p = index * 4;
imageData.data[p + 0] = parseInt(Math.random() * 256);
imageData.data[p + 1] = parseInt(Math.random() * 256);
imageData.data[p + 2] = parseInt(Math.random() * 256);
imageData.data[p + 3] =parseInt(Math.random() * 256);
ctx.putImageData(imageData,0,0);
}
function clearCanvas(){
ctx.clearRect(0,0,width,height);
imageData = ctx.createImageData(width, height);
}
</script>

演示效果:

提示:您可以先修改部分代碼再運行

標簽:阿克蘇 常德 廣西 鄂爾多斯 蚌埠 果洛 松原 廣東

巨人網絡通訊聲明:本文標題《HTML5邊玩邊學(3)像素和顏色》,本文關鍵詞  HTML5,邊玩,邊學,像,素和,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《HTML5邊玩邊學(3)像素和顏色》相關的同類信息!
  • 本頁收集關于HTML5邊玩邊學(3)像素和顏色的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    日韩国产欧美在线视频| 国产美女网站视频| 欧美亚洲动漫制服丝袜| 综合网在线视频| 成人av先锋影音| 日本妇女毛茸茸| 中文字幕中文乱码欧美一区二区 | 亚洲香蕉中文网| 欧美日韩大陆一区二区| 亚洲电影视频在线| 艳妇乳肉豪妇荡乳xxx| 91精品国产一区二区三区蜜臀| 亚洲二区视频在线| 水蜜桃av无码| 精品欧美久久久| 韩日欧美一区二区三区| 亚洲精品天堂网| 国产精品国产三级国产三级人妇| 成人一区二区三区在线观看| 182在线观看视频| 亚洲欧洲日产国码二区| 91蜜桃婷婷狠狠久久综合9色| 欧美色电影在线| 五月天亚洲婷婷| 国产在线观看h| 欧美韩国日本一区| 波多野结衣在线aⅴ中文字幕不卡| 在线看日韩精品电影| 亚洲va国产天堂va久久en| 你懂得在线视频| 欧美精品一区二区三区在线| 国产一区二区三区观看| 黄色一级片中国| 亚洲一区二三区| 人妻熟女aⅴ一区二区三区汇编| 精品乱人伦一区二区三区| 国产一区二区三区免费观看| 成人免费视频网站入口::| 亚洲综合成人在线| 成人影视免费观看| 国产精品国产a| 国产精品久久久久久亚洲av| 26uuu精品一区二区在线观看| 粉嫩13p一区二区三区| 欧美日韩国产天堂| 九九久久精品视频| 色视频欧美一区二区三区| 婷婷激情综合网| 日韩欧美视频免费观看| 亚洲一区二区三区四区五区黄 | 一区二区三区免费看视频| 国产精品嫩草av| 日本一区二区三区免费乱视频 | 色婷婷av一区二区三区软件| 午夜电影久久久| 久久精品色妇熟妇丰满人妻| 亚洲另类在线制服丝袜| 高潮毛片无遮挡| 亚洲视频中文字幕| 六月婷婷七月丁香| 一区二区三区中文字幕精品精品| 李宗瑞91在线正在播放| 亚洲欧美日韩在线| 一区二区伦理片| 一卡二卡三卡日韩欧美| 中文字幕有码在线播放| 亚洲国产综合人成综合网站| 东方伊人免费在线观看| 亚洲与欧洲av电影| 永久av免费网站| 日本亚洲欧美天堂免费| 91久久线看在观草草青青| 久久精品久久综合| 欧美视频在线一区二区三区 | 久久久久无码精品| 久久精品一区二区三区四区| 国产精品无码自拍| 国产精品拍天天在线| 少妇特黄一区二区三区| 一区二区三区四区蜜桃| 男女全黄做爰文章| 日韩av一二三| 欧美三级电影在线看| 国产高清不卡一区二区| 日韩欧美中文字幕制服| 99热这里只有精品2| 国产欧美视频一区二区| 91精品国产自产| 亚洲影视资源网| 97成人资源站| 国产在线日韩欧美| 欧美一级黄色大片| 少妇精品无码一区二区| 成人免费在线播放视频| 国产传媒视频在线| 美女视频免费一区| 在线不卡一区二区| 野花视频免费在线观看| 最新高清无码专区| 亚洲一级生活片| 国产精品99久久久久久久vr| 欧美xxx久久| 97人妻天天摸天天爽天天| 亚洲一区二区三区四区在线观看 | 最新日韩在线视频| 阿v天堂2014| 另类小说色综合网站| 91精品一区二区三区久久久久久 | 91丨九色丨蝌蚪富婆spa| 国产精品久久午夜夜伦鲁鲁| 奇米网一区二区| 狠狠色伊人亚洲综合成人| 精品久久久久av影院| 久久精品综合视频| 日韩中文字幕亚洲一区二区va在线| 欧美视频在线观看一区| 91年精品国产| 一区二区成人在线视频| 欧美视频一区在线| 国模大尺度视频| 亚洲影院理伦片| 欧美喷水一区二区| 在线xxxxx| 三级不卡在线观看| 5858s免费视频成人| 大尺度做爰床戏呻吟舒畅| 亚洲成人自拍一区| 在线电影一区二区三区| 亚洲av永久无码精品| 午夜精品福利久久久| 日韩一区二区中文字幕| www.久久国产| 狠狠色狠狠色综合系列| 国产亚洲福利社区一区| 国产人与禽zoz0性伦| 成人激情免费视频| 樱花影视一区二区| 欧美日高清视频| 成人手机在线免费视频| 美女视频黄久久| 国产日产精品1区| 日韩女优一区二区| 男男受被啪到高潮自述| 丝袜美腿亚洲综合| 精品国产一二三| 强制高潮抽搐sm调教高h| 不卡电影一区二区三区| 亚洲综合色成人| 日韩亚洲欧美高清| jizz18女人高潮| 成人激情av网| 亚洲一区二区在线免费观看视频 | 91精品国产综合久久精品图片| 亚洲人人夜夜澡人人爽| 国产在线日韩欧美| 日韩伦理电影网| 在线不卡a资源高清| 蜜桃久久精品成人无码av| 国产 日韩 欧美大片| 一区二区三区在线视频免费观看| 7777精品伊人久久久大香线蕉完整版| 国产色视频一区二区三区qq号| 国产精品一品二品| 一区二区三区欧美久久| 日韩精品一区二区三区视频播放| 手机av在线不卡| 人妻体体内射精一区二区| 日本成人在线电影网| 中文字幕 久热精品 视频在线| 欧美日韩一级黄| 欧美午夜激情影院| 91日韩在线专区| 麻豆久久久久久| 亚洲欧洲日韩av| 日韩欧美国产成人一区二区| 国产精品视频一区二区在线观看| 99精品热视频| 另类成人小视频在线| 最新日韩在线视频| 欧美v国产在线一区二区三区| 国产一二三区精品| 在线精品一区二区三区| 成人综合婷婷国产精品久久蜜臀| 亚洲妇女屁股眼交7| 国产网站一区二区三区| 欧美日韩亚洲另类| 国产又粗又长又硬| 国产熟女高潮一区二区三区| 国产99精品在线观看| 首页国产欧美久久| 中文字幕一区二区三区乱码在线 | 免费看三级黄色片| 国产在线精品免费av| 亚洲高清中文字幕| 国产精品色哟哟| 日韩一区二区三区精品视频| 色婷婷亚洲一区二区三区| 黄色三级生活片| 日本不卡视频一区| 北条麻妃国产九九精品视频|