喜欢这个
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)以更改其颜色,而原始图片中不存在它的颜色