通过变量输入jython/python缩放图像

2024-06-02 04:49:39 发布

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

相当新的编程,不能找到任何方法,没有使用PIL等,如果我错了,请指出我的正确方向!在

我需要修改下面的代码,以便它将图像复制到TGT中,大小由scale输入选择。在这个阶段,我已经得到了它,这样图片就可以复制到画布上,而画布的大小是由缩放输入决定的,但无法解决如何使图像本身缩放的问题。在

非常感谢任何帮助。在

def driver():
    pic = makePicture(pickAFile())
    repaint(pic)
    modifiedPic = scale(pic,2.0)
    repaint(modifiedPic)

def scale(srcPic,scale):
    xStart = 0
    yStart = 0
    xEnd = getWidth(srcPic)
    yEnd = getHeight(srcPic)
    width = getWidth(srcPic)
    height = getHeight(srcPic)
    tgt = makeEmptyPicture(width*int(scale),height*int(scale))

    for x in range(0,width):
        for y in range(0,height):
            pxSrc=getPixel(srcPic,x,y)
            pxTgt=getPixel(tgt,x,y)
            setColor(pxTgt,getColor(pxSrc))

    srcWidth = xEnd -xStart
    srcHeight = yEnd - yStart

    tgtWidth = int(srcWidth*scale)
    tgtHeight = int(srcHeight*scale)

    for y in range(0,tgtHeight):
        for x in range(0,tgtWidth):
            pxSrc=getPixel(srcPic,int(x/scale)+xStart,int(y/scale)+yStart)
            pxTgt=getPixel(tgt,int(xStart*scale),int(yStart*scale))
            setColor(pxTgt,getColor(pxSrc))
    return tgt

Tags: inforrangewidthinttgtheightscale
1条回答
网友
1楼 · 发布于 2024-06-02 04:49:39

试试这个

def scale(srcPic,scale):
  width = getWidth(srcPic)
  height = getHeight(srcPic)
  tgt = makeEmptyPicture(width*int(scale),height*int(scale))

  # get the pixel from original source
  for x in range(0, width):
    for y in range(0,height):
      pxSrc=getPixel(srcPic,x,y)

      #copy source pixel by scale amount along x and y axis
      for i in range(x * int(scale), x * int(scale) + int(scale)):
        for j in range(y * int(scale), y * int(scale) + int(scale)):
          pxTgt=getPixel(tgt,i,j)
          setColor(pxTgt,getColor(pxSrc))

  return txt

相关问题 更多 >