程序无法识别y值<总高度的三分之一

时间:2013-07-07 10:51:43

标签: python coordinates jython if-statement

我正在编写一个程序来改变图片各部分的颜色。在这种情况下,图像的顶部和底部三分之一。

我可以更改底部三分之一,但由于某种原因,程序无法识别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)

1 个答案:

答案 0 :(得分:3)

您需要在第二个区块中使用elif,而不是if

  if (y<h/3): 
     ...

  elif (y>(h*2/3)):  #<-- change if to elif
     ...

  else:  
     ...

否则,即使else也会执行最终的y < h/3