我正在编写一个程序来改变图片各部分的颜色。在这种情况下,图像的顶部和底部三分之一。
我可以更改底部三分之一,但由于某种原因,程序无法识别if (y<h/3)
我尝试用实际数字代替这个,并改变了我编码颜色变化的方式。
有人可以指出(可能非常明显)我犯的错误。
def changeByThirds(pic):
w= getWidth (pic)
h = getHeight(pic)
newPic = makeEmptyPicture(w,h)
for x in range (0,w):
for y in range (0,h):
pxl = getPixel(pic, x, y)
if (y<h/3):
newPxl= getPixel (newPic, x, y)
color = makeColor(getRed(pxl)*0.1, getGreen(pxl), getBlue(pxl))
setColor ( newPxl, color)
if (y>(h*2/3)):
newPxl= getPixel (newPic, x, y)
color = makeColor(getRed(pxl), getGreen(pxl), 0)
setColor ( newPxl, color)
else:
newPxl = getPixel (newPic, x, y)
color = getColor(pxl)
setColor ( newPxl, color)
return (newPic)
def do():
file = pickAFile()
pic = makePicture(file)
newPic = changeByThirds(pic)
writePictureTo(newPic, r"D:\FOLDER\0pic3.jpg")
explore (newPic)
答案 0 :(得分:3)
您需要在第二个区块中使用elif
,而不是if
:
if (y<h/3):
...
elif (y>(h*2/3)): #<-- change if to elif
...
else:
...
否则,即使else
也会执行最终的y < h/3
。