亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > HTML > 正文

HTML5組件Canvas實現圖像灰度化(步驟+實例效果)

2020-03-22 19:23:56
字體:
來源:轉載
供稿:網友
新建一個html頁面,在body tag之間加入

復制代碼代碼如下:
canvas id="myCanvas" Gray Filter /canvas

添加一段最簡單的JavaScript 腳本

復制代碼代碼如下:
pre name="code" window.onload = function() {
var canvas = document.getElementById("myCanvas");
span /span // TODO: do something here
}

從Canvas對象獲取繪制對象上下文Context的代碼如下:

復制代碼代碼如下:
var context = canvas.getContext("2d");

在html頁面中加入一幅圖像的html代碼如下

復制代碼代碼如下:
img id="imageSource" src="hanjiaren.jpg" alt="Canvas Source" /

從html img對象中獲取image 對象的javascript代碼如下:

復制代碼代碼如下:
var image = document.getElementById("imageSource");

將得到的圖像繪制在Canvas對象中的代碼如下:

復制代碼代碼如下:
context.drawImage(image, 0, 0);

從Canvas對象中獲取圖像像素數據的代碼如下:

復制代碼代碼如下:
var canvasData = context.getImageData(0, 0, canvas.width, canvas.height);

讀取像素值與實現灰度計算的代碼如下:

復制代碼代碼如下:
for ( var x = 0; x canvasData.width; x++) {
for ( var y = 0; y canvasData.height; y++) {
// Index of the pixel in the array
var idx = (x + y * canvasData.width) * 4;
var r = canvasData.data[idx + 0];
var g = canvasData.data[idx + 1];
var b = canvasData.data[idx + 2];
// calculate gray scale value
var gray = .299 * r + .587 * g + .114 * b;
// assign gray scale value
canvasData.data[idx + 0] = gray; // Red channel
canvasData.data[idx + 1] = gray; // Green channel
canvasData.data[idx + 2] = gray; // Blue channel
canvasData.data[idx + 3] = 255; // Alpha channel
// add black border
if(x 8 || y 8 || x (canvasData.width - 8) || y (canvasData.height - 8))
{
canvasData.data[idx + 0] = 0;
canvasData.data[idx + 1] = 0;
canvasData.data[idx + 2] = 0;
}
}
}

其中計算灰度公式為 gray color = 0.299 red color + 0.578 green color + 0.114 * blue color
讀取出來的像素值順序為RGBA 分別代表red color, green color, blue color, alpha channel

處理完成的數據要重新載入到Canvas中。代碼如下:
context.putImageData(canvasData, 0, 0);
程序最終的效果如下:

完全源代碼如下:

復制代碼代碼如下:
html
head
script
window.onload = function() {
var canvas = document.getElementById("myCanvas");
var image = document.getElementById("imageSource");
// re-size the canvas deminsion
canvas.width = image.width;
canvas.height = image.height;
// get 2D render object
var context = canvas.getContext("2d");
context.drawImage(image, 0, 0);
var canvasData = context.getImageData(0, 0, canvas.width, canvas.height);
alert(canvasData.width.toString());
alert(canvasData.height.toString());
// gray filter
for ( var x = 0; x canvasData.width; x++) {
for ( var y = 0; y canvasData.height; y++) {
// Index of the pixel in the array
var idx = (x + y * canvasData.width) * 4;
var r = canvasData.data[idx + 0];
var g = canvasData.data[idx + 1];
var b = canvasData.data[idx + 2];
// calculate gray scale value
var gray = .299 * r + .587 * g + .114 * b;
// assign gray scale value
canvasData.data[idx + 0] = gray; // Red channel
canvasData.data[idx + 1] = gray; // Green channel
canvasData.data[idx + 2] = gray; // Blue channel
canvasData.data[idx + 3] = 255; // Alpha channel
// add black border
if(x 8 || y 8 || x (canvasData.width - 8) || y (canvasData.height - 8))
{
canvasData.data[idx + 0] = 0;
canvasData.data[idx + 1] = 0;
canvasData.data[idx + 2] = 0;
}
}
}
context.putImageData(canvasData, 0, 0); // at coords 0,0
};
/script
/head
body
h2 Hello World! /h2
img id="imageSource" src="hanjiaren.jpg" alt="Canvas Source" /

canvas id="myCanvas" Gray Filter /canvas
/body
/html

代碼中的文件可以替換任意你想要看到的圖片文件
HTML5, 原來如此神奇。程序在google瀏覽器中測試通過,
最后的忠告,千萬不要在本地嘗試運行上面的代碼,google瀏覽器的安全檢查會自動阻止從瀏覽器中讀寫非domain的文件
最好在tomcat或者任意個web container的server上發布以后從google瀏覽器查看效果即可。html教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产免费一区二区三区在线能观看| 亚洲精品一区二区三区婷婷月| 亚洲国产欧美日韩精品| 久久国产精品首页| 国产精品视频久久久久| 一道本无吗dⅴd在线播放一区| 日韩av在线天堂网| 伊人久久久久久久久久久久久| 久久天天躁狠狠躁老女人| 精品呦交小u女在线| 国产在线视频91| 国产精品一区二区av影院萌芽| 欧美日本在线视频中文字字幕| 精品久久久香蕉免费精品视频| 国产日韩欧美电影在线观看| 日韩有码在线播放| 国产一区二区三区久久精品| 国产欧美日韩亚洲精品| 黄色成人在线免费| 日韩av在线电影网| 日韩中文字幕在线精品| 久久精品亚洲一区| 亚洲综合小说区| 麻豆成人在线看| 91大神福利视频在线| 久久久久久久成人| 日韩最新中文字幕电影免费看| 亚洲免费影视第一页| 97高清免费视频| 欧美日韩国产成人在线观看| 久久精品久久久久久| 中文字幕日韩在线播放| 亚洲欧美制服中文字幕| 亚洲欧美中文另类| 亚洲第一精品夜夜躁人人躁| 亚洲男人天堂古典| 国产综合久久久久久| 尤物yw午夜国产精品视频明星| 色婷婷av一区二区三区久久| 91精品美女在线| 亚洲第一精品夜夜躁人人爽| 国产成人97精品免费看片| 中文字幕欧美日韩精品| 久久久久久久久亚洲| 国产日韩精品在线观看| 8x拔播拔播x8国产精品| 国产香蕉精品视频一区二区三区| 国产美女搞久久| 九色成人免费视频| 亚洲国产精品yw在线观看| 久久精品色欧美aⅴ一区二区| 在线观看欧美成人| 亚洲精品午夜精品| 国产在线高清精品| 国产日产久久高清欧美一区| 欧美精品videossex88| 国产精品午夜国产小视频| 欧美性xxxx极品hd欧美风情| 国产成人精品国内自产拍免费看| 久久韩国免费视频| 午夜精品久久久久久久男人的天堂| 亚洲视频在线看| 91在线观看免费| 欧洲成人午夜免费大片| 国产精品视频xxx| 国产精品亚洲美女av网站| 91av视频在线免费观看| 亚洲图片制服诱惑| 久久综合国产精品台湾中文娱乐网| 日韩精品中文在线观看| 日韩电视剧在线观看免费网站| 久久综合伊人77777尤物| 秋霞成人午夜鲁丝一区二区三区| 日韩欧美中文字幕在线观看| 国产乱肥老妇国产一区二| 国产免费一区二区三区在线观看| 亚洲影影院av| 久久香蕉国产线看观看网| 国产精品视频永久免费播放| 亚洲欧洲免费视频| 91亚洲精品在线| 久久精品99久久久久久久久| 日韩av大片免费看| 国产精品久久久久久搜索| 国产精品免费在线免费| 97精品伊人久久久大香线蕉| 国产精品白丝av嫩草影院| 国产一区二区三区直播精品电影| 亚洲第一网站男人都懂| 欧美日韩一区二区免费在线观看| 亚洲一区二区三区在线免费观看| 亚洲一区二区三区777| 欧美一级电影免费在线观看| 性欧美办公室18xxxxhd| 国产精品久久久久久久久男| 中文字幕无线精品亚洲乱码一区| 国产精品一区二区女厕厕| 欧美日本亚洲视频| 中文字幕亚洲字幕| 欧美亚洲视频在线看网址| 欧美多人乱p欧美4p久久| 日韩在线免费观看视频| 亚洲天堂第二页| 亚洲国产小视频| 久久久久久伊人| 国产精品劲爆视频| 国产精品爽黄69天堂a| 亚洲精品一区二区三区婷婷月| 亚洲美女喷白浆| 亚洲第一免费播放区| 亚洲欧美日韩中文视频| 国产精品福利在线| 久久91亚洲人成电影网站| 九九热视频这里只有精品| 国内精品美女av在线播放| 欧美日韩xxxxx| 国产精品视频26uuu| 国产精品第1页| 最新国产精品拍自在线播放| 国产精品天天狠天天看| 国产精品美女www爽爽爽视频| 日韩视频精品在线| 国产精品久久久久久久午夜| 成人疯狂猛交xxx| 国产成人精品视| 欧美激情在线一区| 国产精品男女猛烈高潮激情| 亚洲欧美一区二区精品久久久| 欧美性猛交xxxx| 日韩在线资源网| 日韩美女视频在线观看| 久久久伊人欧美| 精品久久久久国产| 亚洲国产日韩欧美在线动漫| 国产精品video| 色av中文字幕一区| 日韩欧美国产成人| 精品精品国产国产自在线| 日韩激情在线视频| 亚洲第一免费网站| 在线视频欧美性高潮| 日韩视频免费在线观看| 日本亚洲精品在线观看| 中文字幕日韩欧美| 欧美孕妇孕交黑巨大网站| 亚洲无线码在线一区观看| 色偷偷av亚洲男人的天堂| 亚洲一级黄色片| 日韩精品免费综合视频在线播放| 久久久久久高潮国产精品视| 国产成人精品在线视频| 国产91在线播放九色快色| 66m—66摸成人免费视频| 久久久久久91| 成人国产精品色哟哟| 欧美成人黑人xx视频免费观看| 久久久99久久精品女同性| 国产精品久久久久免费a∨| 欧美成人h版在线观看| 欧美疯狂xxxx大交乱88av| 国产有码一区二区| 日韩视频免费看| 日本高清不卡的在线| 精品爽片免费看久久|