所以我是Python的新手,我正在使用JES,并试图弄清楚如何裁剪图像。我一直收到"show (croppedPicture)“无效的错误,此时我可以使用任何我能得到的帮助。这是我到目前为止的代码:
def main():
print "Select the Media Folder"
setMediaFolder()
print "Select the picture (.jpg) file to crop"
fileName = pickAFile()
pict = makePicture(fileName)
show(pict)
startX = requestIntegerInRange("Enter X coordinate of upper, left-hand corner",0,getWidth(pict)-1)
startY = requestIntegerInRange("Enter Y coordinate of upper, left-hand corner",0,getHeight(pict)-1)
endX = requestIntegerInRange("Enter X coordinate of lower, right-hand corner",startX,getWidth(pict)-1)
endY = requestIntegerInRange("Enter Y coordinate of lower, right-hand corner",startY,getHeight(pict)-1)
print "Please wait while picture is cropped from (",startX,",",startY,") to (",endX,",",endY,")."
croppedPicture = makeCroppedPicture(pict, startX, startY, endX, endY)
show(croppedPicture)
newFileName = getMediaPath('croppedPicture.jpg')
writePictureTo(croppedPicture, newFileName)
def makeCroppedPicture(pict, startX, startY, endX, endY):
""" Makes and returns a cropped rectangular region of a picture into a new picture """
target = makeEmptyPicture
def crop(picture):
def crop(picture):
width = getWidth(pict)
height = getHeight(pict)
canvas = makeEmptyPicture(width, height)
targetX = 100
for sourceX in range(100,30):
targetY = 100
for sourceY in range(311,433):
color = getColor(getPixel(pict, sourceX, sourceY))
setColor(getPixel(canvas, targetX, targetY),color)
targetY = targetY + 1
targetX = targetX + 1
show(pict)
return canvas
return target # returns the cropped picture
main() # starts the program发布于 2015-03-13 22:45:41
代码的粘贴似乎出了点问题;第2行缺少缩进,第3行有一个虚假的"Add code here“字符串(裁剪()函数的定义也出现了一些奇怪的问题,因为在代码运行之前需要纠正缩进!)。
也就是说,通过删除第29-43行来删除crop()函数,因为它们当前不被使用,那么问题就会变得更容易看到……
def makeCroppedPicture(pict, startX, startY, endX, endY):
target = makeEmptyPicture
return target # returns the cropped picturetarget = makeEmptyPicture行的用法是将变量makeEmptyPicture赋给实际的函数target,而不是调用该函数返回的内容。
感兴趣的是,在post Assigning a function to a variable中有更多关于如何/为什么要这样做的信息。
要解决这个问题,只需在makeEmptyPicture调用中添加两个用于裁剪图像的高度和宽度的参数。注:你可以先硬编码几个数字来检查它是否正常工作。即target = makeEmptyPicture(50, 50)
https://stackoverflow.com/questions/28933046
复制相似问题