For-loop (Javascript里沒(méi)有這個(gè)函數(shù)):
對(duì)圖像中所有的點(diǎn)逐一進(jìn)行操作谋逻,這里body lines are indented to show difference with other lines.
image = new SimpleImage ("flowers.jpg")
for(pixel:image){
? ? ?pixel.setRed(0);
? ? ?pixel.setBlue(0);
}
print(image)
Image Expressions
主要是講了一個(gè)pixel.getRed()函數(shù)窝剖,這個(gè)函數(shù)可以直接獲取圖像中每一個(gè)pixel的rgb值,之后我們可以對(duì)它獲得的值進(jìn)行乘法運(yùn)算券坞。這樣當(dāng)我們想要對(duì)以后圖像的顏色進(jìn)行調(diào)試時(shí),可以不用具體的rgb值,只要嘗試相對(duì)的倍數(shù)就可以帮掉。
不過(guò)這個(gè)函數(shù)也是對(duì)圖像上所有的pixel來(lái)進(jìn)行操作的。
image=new SimpleImage("flowers.jpg")
for(pixel:image){
? ? pixel.setGreen(pixel.getGreen() * 0.75)
}
print(image)
當(dāng)然窒典,可以把pixel.getGreen()賦給一個(gè)變量蟆炊,然后再setGreen里直接用變量名。
image=new SimpleImage("flowers.jpg")
for(pixel:image){
old=pixel.getGreen()
pixel.setGreen(old* 0.75)
}
print(image)
Image Puzzel
這個(gè)section主要是講了一種調(diào)試顏色的思路瀑志。一張色調(diào)在黑-紅之間的金門(mén)大橋的照片涩搓,被一片藍(lán)綠色“雪花遮蓋”。這個(gè)圖像其實(shí)是所有pixel的r值被除了一個(gè)很大的值劈猪,導(dǎo)致pixel之間雖然r值的相互關(guān)系可以構(gòu)成一個(gè)圖像但暗度太低所以看不清昧甘,形成了一個(gè)黑色的畫(huà)布,上面的b/g值可以隨意設(shè)定顯現(xiàn)出任意战得,藍(lán)綠色圖像充边。
修復(fù)的方法就是把b/g值設(shè)成0,然后把所有pixel的r值等比增大就行常侦。
Grayscale Images
當(dāng)一個(gè)顏色r/g/b三個(gè)值相等的時(shí)候浇冰,它就處于灰色色譜上,不偏向于紅綠藍(lán)任何一種顏色聋亡。
怎么把彩色的圖片轉(zhuǎn)化成灰色的呢肘习?如何衡量圖片上某個(gè)顏色的亮度呢?---答案是取r/g/b三個(gè)值的平均值杀捻。
image = new SimpleImage("flowers.jpg");
for (pixel: image) {
avg=[pixel.getRed()+pixel.getGreen()+pixel.getBlue()]/3
pixel.setRed(avg)
pixel.setGreen(avg)
pixel.setBlue(avg)
}
print(image);
其中求平均值的步驟必須放在for loop里面井厌,因?yàn)槊總€(gè)pixel的明亮度不同蚓庭,需要進(jìn)行逐一計(jì)算。
提醒:經(jīng)過(guò)試驗(yàn)仅仆,setGreen,getGreen函數(shù)后面必須要立馬跟上括號(hào)器赞,但for和SimpleImage就沒(méi)有關(guān)系,不用立馬跟上墓拜。
Ps,第二課的作業(yè)試顏色真的是港柜,沒(méi)有最好只有更好,每次我覺(jué)得已經(jīng)不錯(cuò)了submit后還是不對(duì)咳榜,最后還是靠排列組合找出的最佳答案夏醉,囧!