2013-03-21 1 views
1

Привет, я пытаюсь сделать функцию crop в среде Jython. Студентам нравится то, что у меня есть.Crop Function 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) х (Endy - 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]