如何对角线翻转图片



喜欢这个

https://i.stack.imgur.com/ninbe.jpg

这是我拥有的,但它不起作用,我不确定为什么。

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)

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

正如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)

仍然,您可能想思考要翻转什么对角线。

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

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

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

相关内容

  • 没有找到相关文章

最新更新