1

像这样

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)
4

2 回答 2

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)

不过,您可能想考虑一下您想要翻转的对角线。

于 2012-10-31T21:32:17.103 回答
1

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

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

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

于 2012-10-31T21:07:27.067 回答