今天就跟大家聊聊有關使用JavaScript怎么實現一個濾鏡算法,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
1.灰色濾鏡
設定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.單色濾鏡(以紅色為例)
計算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;
}看完上述內容,你們對使用JavaScript怎么實現一個濾鏡算法有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。