尝试这个:
注意:结果画布的大小可以从(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]