所以我需要水平翻转图像,这意味着关于水平轴,如图
然而我的问题是它在垂直轴方面的翻转,如图
所示这是我现在的代码。有人可以解释我需要做的改变吗? image.gif是我试图翻转的图像。我将newImage设置在新位置的原因如下所示是因为我希望图像与旧图像在同一窗口中出现。它确实做到了!只能垂直翻转而不是水平翻转。
from cImage import*
def horizentalFlip(oldimage):
myimagewindow = ImageWin("image",1000,600)
oldimage = FileImage("image.gif")
oldimage.draw(myimagewindow)
oldw = oldimage.getWidth()
oldh = oldimage.getHeight()
newImage = EmptyImage(oldw,oldh)
maxp = oldw - 1
for row in range(oldh):
for col in range(oldw):
oldpixel = oldimage.getPixel(maxp-col,row)
newImage.setPixel(col,row,oldpixel)
newImage.setPosition(oldw+1,0)
newImage.draw(myimagewindow)
myimagewindow.exitOnClick()
谢谢
答案 0 :(得分:2)
你想要的翻转类型(围绕x轴的反射,你的第一张照片)通常称为“垂直”翻转,而y轴周围的反射(你的第二张图片)通常被称为水平翻转。
除了命名法,你想要反射x轴,如果我理解你正确你的问题是你得到关于y轴的反射。这是因为以下几行:
maxp = oldw - 1
...
oldpixel = oldimage.getPixel(maxp-col,row)
操纵每个w
调用的宽度(col
),列(getPixel
)和第一个坐标参数:所有这些概念都与操作相关每个像素的水平坐标。但是你想要改变每个像素的垂直坐标,所以你需要使用高度,行和第二个坐标参数:
maxp = oldh - 1
...
oldpixel = oldimage.getPixel(col, maxp - row)