2013-11-01 95 views
-1

我試圖留下三分之一的圖像存量,在中間將所有黑色更改爲黃色,並將底部第三個黑色更改爲藍色。我知道如何改變顏色,我面對的問題是我不知道如何只選擇三分之一的像素來操縱它們。這裏就是我有..如何更改圖像某些像素的顏色?

def changeSpots1(): 
    file = pickAFile() 
    picture = makePicture(file) 
    show(picture) 
    pix = getAllPixels(picture) 
    for p in pix: 
     intensity = (getRed(p) + getGreen(p) + getBlue(p)) 
     c = getColor(p) 
     if (intensity < 150):    
      newColour = setColor(p, yellow) 
    repaint(picture) 

我使用了一個名爲JES程序來寫這個,櫃面你想知道像pickAFile命令。 謝謝你的幫助!

+0

請認真閱讀[Stack Overflow question checklist](http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist)和[sscce.org](http://www.sscce.org) /)發佈之前。 – zero323

回答

0

我一無所知JES,但我要猜getAllPixels返回正常順序像素:第一行,然後下一行,那麼接下來,等

如果是這樣的:

pix = getAllPixels(picture) 
third = len(pix) // 3 
for p in pix[:third]: 
    # do top-third stuff 
for p in pix[third:third*2]: 
    # do middle-third stuff 
for p in pix[third*2:]: 
    # do bottom-third stuff 

這確實假設圖片完全可分成三分之一。如果不是這樣,你需要知道圖片的寬度,這樣你就可以四捨五入到最接近的整行(因爲否則前三分之一實際上可能是250個完整行和251個前47個像素,這看起來不太好) 。我不知道JES有什麼功能來獲得寬度,但我相信這很簡單。