2013-03-21 71 views
1

嗨即時嘗試在裁剪功能在Jython環境對於學生繼承人我到目前爲止。作物功能Jython JES

我也想弄清楚如何使畫布的大小,所有的新像素將佔用。

任何幫助

def crop(pic, startX, endX, startY, endY): 
    canvas = makeEmptyPicture(500, 800) 
    for sourceX in range(startX, endX): 
     for sourceY in range(startY, endY): 
      color = getColor(getPixel(pic, sourceX, sourceY)) 
      setColor(getPixel(canvas, startX, startY), color) 
      startY = startY + 1 
     startX = startX + 1 
    show(canvas) 

回答

1

試試這個:

注:可從(endX - STARTX)獲得所產生的畫布的大小x(恩迪 - startY)

def crop(pic, startX, endX, startY, endY): 
    # Check if the cropping bounds are OK with size of the original picture 
    if (endX - startX > 0) and (endY - startY > 0) and \ 
         (endX < getWidth(pic)) and (endY < getHeight(pic)): 
     # Create a canvas with correct size 
     canvas = makeEmptyPicture(endX - startX, endY - startY) 
     # Browse the interesting part 
     for sourceX in range(startX, endX): 
      for sourceY in range(startY, endY): 
       color = getColor(getPixel(pic, sourceX, sourceY)) 
       # Write the pixels, 
       # starting from 0 (=startX(Y)-startX(Y)) to endX(Y) 
       setColor(getPixel(canvas, 
           sourceX - startX, sourceY - startY), color) 
     return canvas 
    else: 
     # Print error when passing wrong bounds 
     printNow("Error: bad cropping bounds ! - Expected [0.." + 
      str(getWidth(pic)-1) + "] x [0.." + str(getHeight(pic)-1) + "]")   
     return None 

def main(): 
    file = pickAFile() 
    picture = makePicture(file) 
    cropPic = crop(picture, 50, 150, 50, 180) 
    if (cropPic): 
     show(cropPic) 

main() 


,並提供:




........... enter image description here ........................ ............................ enter image description here ...........



錯誤參數輸出:

>>> cropPic = crop(picture, 50, 500, 50, 180) 
>>> 
======= Loading Progam ======= 
Error: bad cropping bounds ! - Expected [0..258] x [0..193]