我在水平和垂直轴上做了一个镜像。现在我要做对角线。
我做了hori和verti width两个for循环,在hori场景中,循环遍历高度中的所有像素和宽度中的一半像素。然后获取像素的颜色,并将相同的颜色设置为另一侧的像素。从getWidth(pic)
到中心。
然后我把镜子放在照片中间。对角线怎么做?
编辑:
img_src = makePicture(pickAFile())
W = getWidth(img_src)
H = getHeight(img_src)
for x in range(W):
for y in range(H):
p = getPixel(img_src, x, y)
colorInSrc = getColor( getPixel(img_src, x, y) )
destPixel = getPixel(img_src, H-y-1, W-x-1)
setColor(destPixel, colorInSrc)
这不是一个真正的Python问题,不是吗?
最简单的解决方法是先水平镜像,然后垂直镜像。 另一个方法是将像素行与列进行切换。
或者做你的算法,但是从左上到右下切换像素。。。
使用PIL(Python映像库)这是一个相对简单的任务。但是,请注意,输出图像是正方形的,因此大小与原始图像不同。
代码如下:
如果我理解正确的话,你需要的是用对角线“翻转”图像。既然有两个,我想你是指从左下到右上的那个。
要按此对角线翻转,需要在目标列中转换源中的每一行。行的左侧将成为新列的底部。最上面的一行也将成为最右边的一列。你需要在整个图像上逐像素地做这个。还要记住,图像的宽度和高度将被交换。
编辑:一个小例子。假设从5像素宽3像素高的图像开始(5x3)。您将需要创建一个新的空白图像3像素宽和5像素高。
如果从左上角开始用(0,0)进行像素编号,则该像素将在新图像中的(2,4)处结束,像素(1,0)将在(2,3)处结束,依此类推。
如果原始宽度和高度是W和H,则应使用以下内容:
这应该有效,但没有经过测试。
相关问题 更多 >
编程相关推荐