在JE中用Jython制作拼贴画

2024-10-01 17:35:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个学校的项目,我必须创建一个拼贴,显示一个图像多次改变每个图像。我有一个问题与窃取大小的前一个图像,但得到解决,现在有另一个问题。当运行拼贴程序时,它为每个函数创建一个不同的图像来更改图像,然后在JES中显示一个空白画布,其中显示消息“Picture,filename None height 700 width 515”。我需要所有的图像显示在一个画布上与他们的变化。感谢任何帮助

def copy(sourcePic,targetPic, tarX, tarY):
  pictureTurtle = makePicture(getMediaPath("turtle.jpg"))
  targetX = tarX
  for sourceX in range(0, getWidth(sourcePic)):
    targetY = tarY
    for sourceY in range(0, getHeight(sourcePic)):
      pxColor = getPixel(sourcePic, sourceX, sourceY)
      txColor = getPixel(targetPic, targetX, targetY)
      target = targetY + 1
    targetX = targetX + 1



def lighten(pictureTurtle):
  pictureTurtle = makePicture(getMediaPath("turtle.jpg"))
  for pxColor in getPixels(pictureTurtle):
    color = getColor(pxColor)
    color = makeLighter(color)
    setColor(pxColor, color)
  show(pictureTurtle)



def negative(pictureTurtle):
  pictureTurtle = makePicture(getMediaPath("turtle.jpg"))
  for pxColor in getPixels(pictureTurtle):
    red = getRed(pxColor)
    green = getGreen(pxColor)
    blue = getBlue(pxColor)
    negColor = makeColor(255-red,255-green,255-green)
    setColor(pxColor, negColor)
  show(pictureTurtle)



def grayscale(pictureTurtle):
  pictureTurtle = makePicture(getMediaPath("turtle.jpg"))
  for pxColor in getPixels(pictureTurtle):
    intensity = (getRed(pxColor)+getBlue(pxColor))/3
    setColor(pxColor,makeColor(intensity,intensity,intensity))
  show(pictureTurtle)


def rotate(pictureTurtle):
  pictureTurtle = makePicture(getMediaPath("turtle.jpg"))
  w,h = getWidth(pictureTurtle), getHeight(pictureTurtle)
  for y in xrange(h):
    for x in xrange(w):
      color = getColor(getPixel(pictureTurtle, x, y))
      targetPixel = getPixel(pictureTurtle, x, y)
      setColor(targetPixel, color)
  show(pictureTurtle)

def collage():
  pictureTurtle = makePicture(getMediaPath("turtle.jpg"))
  canvas = makeEmptyPicture(515, 700)
  copy(pictureTurtle,canvas,0,getHeight(canvas)-getHeight(pictureTurtle)-5)
  lighten(pictureTurtle)
  copy(pictureTurtle,canvas,50,getHeight(canvas)-getHeight(pictureTurtle)-5)
  negative(pictureTurtle)
  copy(pictureTurtle,canvas,100,getHeight(canvas)-getHeight(pictureTurtle)-5)
  grayscale(pictureTurtle)
  copy(pictureTurtle,canvas,12,75-5)
  rotate(pictureTurtle)
  copy(pictureTurtle, canvas,62, 75-5)
  show(canvas)
  return(canvas)

Tags: in图像fordefshowcolorjpgcanvas

热门问题