1

嗨,我正在尝试在 Jython Environment For Students 中创建裁剪功能,这就是我到目前为止所拥有的。

我还试图弄清楚如何使画布成为所有新像素都将占用的大小。

任何帮助

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)
4

1 回答 1

1

尝试这个:

注意:结果画布的大小可以从(endX - startX) x (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()


给予:




………………………………………………………………………………………………………………………… 在此处输入图像描述_ …………………………………………………………………………………… 在此处输入图像描述_



输出参数错误:

>>> cropPic = crop(picture, 50, 500, 50, 180)
>>> 
======= Loading Progam =======
Error: bad cropping bounds ! - Expected [0..258] x [0..193]
于 2013-06-23T23:49:05.533 回答