如何对角翻转图片

时间:2012-10-31 20:42:23

标签: python jython jes

喜欢这个

http://imgur.com/a/rPyKb

这就是我所拥有的,但它不起作用,我不知道为什么。

def mirrorDiagonal(picture):
  for sourceX in range(0,getWidth(picture)):
    for sourceY in range (0,getHeight(picture)):
      pex=getPixel(picture,sourceY,sourceX)
      pix=getPixel(picture, sourceX,sourceY)
      color=getColor(pix)
      setColor(pex,color)

2 个答案:

答案 0 :(得分:2)

因为我错了所以编辑了这篇文章。

正如Jan所说,如果你想保留一半的图片,你必须考虑不要覆盖所有的像素。

它应该是这样的:

def mirrorDiagonal(picture):
    for sourceX in range(0,getWidth(picture)):
        for sourceY in range (sourceX,getHeight(picture)):
            pex=getPixel(picture,sourceY,sourceX)
            pix=getPixel(picture, sourceX,sourceY)
            color=getColor(pix)
            setColor(pex,color)

尽管如此,你可能还想想想要翻转的对角线。

答案 1 :(得分:1)

让我们说你处于蓝色的位置(x,y)=(7,8),算法将(8,7)(绿色)像素变为蓝色。 当你的循环到达点(8,7)时,它会从先前的任务中发现它是蓝色的,并且你不再拥有原始颜色(绿色)。结果,最终右上角对角线不变,左下角反射。

为了恢复左下角的原始值,您需要将它们存储在某处并在x> gt时使用它们。 y(图片的左下部分)

[编辑]请注意,根据图片的几何形状,转换(x,y) - > (y,x)可能指向一个不存在的点。考虑50px x 100px图片,当您在点(50,100)处调用像素(100,50)以更改其颜色而原始图片中不存在时