Jython中的图像裁剪功能出错

时间:2013-06-09 02:30:05

标签: image jython crop jes

好的,对于作业,我必须制作一个函数crop()来裁剪test_crop()中的图片。这是代码。

def crop(pict, startX, startY, endX, endY):
 width = endX - startX + 1
 height = endY - startY + 1
 canvas = makeEmptyPicture(width, height)
 targetX = 100
 for sourceX in range(45,200):
  targetY = 100
  for sourceY in range(25,200):
    color = getColor(getPixel(pict, sourceX, sourceY))
    setColor(getPixel(canvas, targetX, targetY), color)
    targetY = targetY + 1
  targetX = targetX + 1
show(pict)
show(canvas)
return canvas

def test_crop():
 setMediaPath() 
 pict = makePicture("redMotorcycle.jpg")
 croppedPict = crop(pict, 100, 100, 700, getHeight(pict)/2)
 show(pict)
 show(croppedPict)

这段代码发生错误:

setColor(getPixel(canvas, targetX, targetY), color)

它说"Inappropriate argument (of correct type. An error occured attempting to pass an argument to a function."

有人可以告诉我它有什么问题吗?它与教科书中的代码相同。

1 个答案:

答案 0 :(得分:0)

这很有效。我无法弄清楚你为什么会收到这个错误,可能就是你如何获得startX, startY, endX, endY的价值 def crop(pict, startX, startY, endX, endY):

def crop(pict):
  width = getWidth(pict)
  height = getHeight(pict)
  canvas = makeEmptyPicture(width, height)
  targetX = 100
  for sourceX in range(45,200):
    targetY = 100
    for sourceY in range(25,200):
      color = getColor(getPixel(pict, sourceX, sourceY))
      setColor(getPixel(canvas, targetX, targetY),color)
      targetY = targetY + 1
    targetX = targetX + 1
  show(pict)
  show(canvas)
  return canvas

原始图片:

Original picture

裁剪后的图片:

Cropped Picture

除此之外,您还需要提供有关代码的更多信息。