Python 如何沿对角线翻转图片
像这样 这就是我所拥有的,但它不起作用,我不知道为什么Python 如何沿对角线翻转图片,python,jython,jes,Python,Jython,Jes,像这样 这就是我所拥有的,但它不起作用,我不知道为什么 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) col
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)
假设你在(x,y)=(7,8)的蓝色位置,算法将(8,7)(绿色)像素变成蓝色。 当您的循环到达点(8,7)时,它会发现它是先前指定的蓝色,您不再具有原始颜色(绿色)。结果,右上角对角线保持不变,其反射位于左下角 为了恢复左下角的原始值,您需要将它们存储在某个位置,并在x>y时使用它们(图片的左下角部分)
[编辑]注意,根据图片的几何结构,变换(x,y)->(y,x)可能指向不存在的点。考虑50px x100px图片,当你在点(50100)时调用像素(100,50)来改变它的颜色,而它不存在于你的原始图片< P>编辑这篇文章,因为我错了。< /P> 正如简所说,如果你想保留一半的图片,你必须考虑不要覆盖所有的像素 应该是这样的:
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)
不过,您可能会想,您希望打开的对角线是什么。“它不起作用”是非常模糊的。在我看来,从代码中可以看出,您正在用结果数据重写源缓冲区。输入和输出需要单独的缓冲区,或者交换像素(使用临时变量)。如果要进行就地交换,请确保不要将每一对进行两次交换。这里有一个参考:您不想获得并设置两种颜色而不是一种颜色吗?如果您不想保留图片的一半,这将是一个很好的优化。示例图片只是在对角线上镜像。啊,仍然无法使其工作。没希望了。哈。也许你可以更详细地描述一下为什么它不起作用。问题可能是宽度和高度不相等,或者其他任何东西。你必须提供更多的信息。