今天就跟大家聊聊有關(guān)使用JavaScript怎么實(shí)現(xiàn)一個濾鏡算法,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

1.灰色濾鏡
設(shè)定R,G,B值相等
function makeGray(img){
for(var pixel of img.values()){
var avg = (pixel.getRed()+pixel.getGreen()+pixel.getBlue())/3;
pixel.setRed(avg);
pixel.setGreen(avg);
pixel.setBlue(avg);
}
return img;
}2.單色濾鏡(以紅色為例)
計(jì)算R,G,B的均值avg,判斷avg是否小于128.
function makeRed(img){
for(var pixel of img.values()){
var avg = (pixel.getRed()+pixel.getGreen()+pixel.getBlue())/3;
if(avg<128){
pixel.setRed(2*avg);
pixel.setGreen(0);
pixel.setBlue(0);
}
else{
pixel.setRed(255);
pixel.setGreen(2*avg-255);
pixel.setBlue(2*avg-255);
}
}
return img;
}3.彩色濾鏡
function makeRainbow(img){
for(var pixel of img.values()){
var x = pixel.getX();
var y = pixel.getY();
var avg = (pixel.getRed()+pixel.getGreen()+pixel.getBlue())/3;
var h = img.height;
if(y<h/7){
if(avg<128){
pixel.setRed(2*avg);
pixel.setGreen(0);
pixel.setBlue(0);
}
else{
pixel.setRed(255);
pixel.setGreen(2*avg-255);
pixel.setBlue(2*avg-255);
}
}
if(y>=h/7 && y<h*2/7){
if(avg<128){
pixel.setRed(2*avg);
pixel.setGreen(0.8*avg);
pixel.setBlue(0);
}
else{
pixel.setRed(255);
pixel.setGreen(1.2*avg-51);
pixel.setBlue(2*avg-255);
}
}
if(y>=h*2/7 && y<h*3/7){
if(avg<128){
pixel.setRed(2*avg);
pixel.setGreen(2*avg);
pixel.setBlue(0);
}
else{
pixel.setRed(255);
pixel.setGreen(255);
pixel.setBlue(2*avg-255);
}
}
if(y>=h*3/7 && y<h*4/7){
if(avg<128){
pixel.setRed(0);
pixel.setGreen(2*avg);
pixel.setBlue(0);
}
else{
pixel.setRed(2*avg-255);
pixel.setGreen(255);
pixel.setBlue(2*avg-255);
}
}
if(y>=h*4/7 && y<h*5/7){
if(avg<128){
pixel.setRed(0);
pixel.setGreen(0);
pixel.setBlue(2*avg);
}
else{
pixel.setRed(2*avg-255);
pixel.setGreen(2*avg-255);
pixel.setBlue(255);
}
}
if(y>=5*h/7 && y<h*6/7){
if(avg<128){
pixel.setRed(0.8*avg);
pixel.setGreen(0);
pixel.setBlue(2*avg);
}
else{
pixel.setRed(1.2*avg-51);
pixel.setGreen(2*avg-255);
pixel.setBlue(255);
}
}
if(y>=h*6/7){
if(avg<128){
pixel.setRed(1.6*avg);
pixel.setGreen(0);
pixel.setBlue(1.6*avg);
}
else{
pixel.setRed(0.4*avg+153);
pixel.setGreen(2*avg-255);
pixel.setBlue(0.4*avg+153);
}
}
}
return img;
}看完上述內(nèi)容,你們對使用JavaScript怎么實(shí)現(xiàn)一個濾鏡算法有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。
當(dāng)前標(biāo)題:使用JavaScript怎么實(shí)現(xiàn)一個濾鏡算法-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://chinadenli.net/article12/dphjdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站設(shè)計(jì)、定制開發(fā)、動態(tài)網(wǎng)站、網(wǎng)站導(dǎo)航、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容