我必须:
编写函数mirrorClockWise(source)
,以顺时针方向反映每个源的四分之一。左上角的左上角镜像到右上角的四分之一处。右上角部分镜像到右下角的四分之一处。
这是我的代码,唯一的问题是右上角与它应该是不同的,因为它镜像已经镜像的左上角,而不是原来的左上角。
让我知道无论如何我都可以解决这个问题......
def topLeft(source):
mirrorPoint = getWidth(source) / 2
width = getWidth(source)
for y in range(0,getHeight(source)/2):
for x in range(0,mirrorPoint):
leftPixel = getPixel(source,x,y)
rightPixel = getPixel(source,width - x - 1,y)
color = getColor(leftPixel)
setColor(rightPixel,color)
def topRight(source):
mirrorPoint = getHeight(source) / 2
height = getHeight(source)
for x in range(getWidth(source)/2,getWidth(source)):
for y in range(0,mirrorPoint):
topPixel = getPixel(source, x, y)
bottomPixel = getPixel(source, x, height - y - 1)
color = getColor(topPixel)
setColor(bottomPixel,color)
def bottomRight(source):
mirrorPoint = getWidth(source) / 2
width = getWidth(source)
for y in range(getHeight(source)/2,getHeight(source)):
for x in range(mirrorPoint,width):
leftPixel = getPixel(source,x,y)
rightPixel = getPixel(source,width - x - 1,y)
color = getColor(leftPixel)
setColor(rightPixel,color)
def bottomLeft(source):
mirrorPoint = getHeight(source) / 2
height = getHeight(source)
for x in range(0,getWidth(source)/2):
for y in range(mirrorPoint,height):
topPixel = getPixel(source, x, y)
bottomPixel = getPixel(source, x, height - y - 1)
color = getColor(topPixel)
setColor(bottomPixel,color)
def mirrorClockWise(source):
bottomLeft(source)
bottomRight(source)
topRight(source)
topLeft(source)
答案 0 :(得分:0)
Python中的循环(超过像素)非常慢 - 如果可能,您应该使用外部库,例如PIL(Python Imaging Library)和transpose
方法。我不确定是否可以从Jython获得PIL。
关于镜像已镜像的数据,您可以:
1)将源图像和目标图像传递给函数是很常见的。创建新图像以存储结果,以便在处理
时源图像不会损坏dest = source.copy() # using PIL copy method
topLeft(source, dest)
...
2)将图像分成4个部分,分别镜像并重新组合图像(好好利用外部库可能会使这个最快)
im1 = source.crop(box) # where box defines one of the corners
im1.load()
im1.transpose(FLIP_LEFT_RIGHT)
... do other corners
im.paste(im1, box)
... do other corners
3)重写算法,以便您可以修改数据。例如,不是分别处理每个角,而是考虑相互映射的像素集:
第一步
a......b c......a
........ => ........
........ ........
c......d d......b
第二步
.e....f. .h....e.
........ => ........
........ ........
.h....g. .g....f.
...
........ ........
i......j => l......i
l......k k......j
........ ........