JavaScript+Canvas實現(xiàn)彩色圖片轉(zhuǎn)換成黑白圖片的方法分析
本文實例講述了JavaScript+Canvas實現(xiàn)彩色圖片轉(zhuǎn)換成黑白圖片的方法。分享給大家供大家參考,具體如下:
1、convertToGray()
在主體代碼中使用 canvas 元素的id來獲取畫布,并設(shè)置畫布的寬和高為圖片的寬和高,再將上下文初始化為2d畫布;彩色圖片加載完成后,使用 drawImage() 將圖片加載到上下文,調(diào)用用于完成剩余繪制工作的 getColorData()和 putColorData();最后為myImage指定彩色圖片的路徑。
2、getColorData()
使用 getImageData()將圖像復(fù)制到 myImage,然后按照以下方式處理圖像:在圖像數(shù)據(jù)數(shù)組中移動,并收集前三個字節(jié)(紅色、綠色和藍色,忽略 alpha)的值;然后,該圖像將三個字節(jié)的值相加,并將總和除以3,計算結(jié)果將舍入為一個整數(shù),并被寫入到這三個字節(jié)的值中。此值對應(yīng)于顏色的色調(diào),但灰度值從0到255,得到外觀與原始彩色圖片相同的黑白圖片。
3、putColorData()
putImageData() 將已更改的圖像數(shù)據(jù)寫回到畫布,通常用于讓另一個圖片執(zhí)行實際處理,并僅在處理完成時顯示結(jié)果。
var canvas, ctx, myImage;
function convertToGray() {
myImage = document.getElementById("img");
canvas = document.getElementById("myCanvas");
canvas.width = img.width;
canvas.height = img.height;
if (canvas.getContext) {
ctx = canvas.getContext("2d");
myImage.onload = function() {
ctx.drawImage(myImage, 0, 0);
getColorData();
putColorData();
}
myImage.src = "images/img8.jpg";
}
}
function getColorData() {
var length = canvas.width * canvas.height;
myImage = ctx.getImageData(0, 0, canvas.width, canvas.height);
for (var i = 0; i < length * 4; i += 4) {
var myRed = myImage.data[i];
var myGreen = myImage.data[i + 1];
var myBlue = myImage.data[i + 2];
myGray = parseInt((myRed + myGreen + myBlue) / 3);
myImage.data[i] = myGray;
myImage.data[i + 1] = myGray;
myImage.data[i + 2] = myGray;
}
}
function putColorData() {
ctx.putImageData(myImage, 0, 0);
}
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript+HTML5特效與技巧匯總》、《JavaScript圖片操作技巧大全》、《JavaScript圖形繪制技巧總結(jié)》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學運算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
相關(guān)文章
VS2008中使用JavaScript調(diào)用WebServices
這篇文章主要介紹了VS2008中使用JavaScript調(diào)用WebServices,需要的朋友可以參考下2014-12-12
JavaScript創(chuàng)建對象_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了JavaScript創(chuàng)建對象的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06
JS實現(xiàn)可針對算術(shù)表達式求值的計算器功能示例
這篇文章主要介紹了JS實現(xiàn)可針對算術(shù)表達式求值的計算器功能,可實現(xiàn)基本的數(shù)字四則運算功能,涉及javascript基本數(shù)值運算與流程控制、判斷等操作技巧,需要的朋友可以參考下2018-09-09

