2013-06-14 5 views
2

Так что мне нужно зеркало изображения. Верхнюю правую сторону изображения следует перевернуть на нижнюю левую сторону. Я создал функцию, которая переворачивает верхнюю левую часть изображения в нижнем правом углу, но я просто не могу понять, как это сделать по-другому. Вот код:Зеркалирование изображения по диагонали в Jython

def mirrorPicture(picture): 
height = getHeight(canvas) 
width = height 

# to make mirroring easier, let us make it a square with odd number 
# of rows and columns 
if (height % 2 == 0): 
    height = width = height -1 # let us make the height and width odd 


maxHeight = height - 1 
maxWidth = width - 1 

for y in range(0, maxWidth): 
     for x in range(0, maxHeight - y):  
     sourcePixel = getPixel(canvas, x, y) 
     targetPixel = getPixel(canvas, maxWidth - y, maxWidth - x) 
     color = getColor(sourcePixel) 
     setColor(targetPixel, color) 

return canvas 

Кстати, я использую IDE под названием «JES».

+0

Вы не делаете правильный щелчок в размещенном коде либо: вам нужно * обмен * цвета sourcePixel и targetPixel. По вашему вопросу, подумайте об этом так: как отправлено, ваша программа копирует (x, y) в (max-y, max-x). При необходимости нарисуйте диаграмму: какие пиксели нужно скопировать, куда перевернуть ее по другой диагонали? –

ответ

2

Если под "зеркалирование", вы имели в виду "переворачивать по диагонали", это должно работать:

def mirrorPicture(picture): 
    height = getHeight(picture) 
    width = getWidth(picture) 

    newPicture = makeEmptyPicture(height, width) 

    for x in range(0, width): 
     for y in range(0, height): 
      sourcePixel = getPixel(picture, x, y) 

      targetPixel = getPixel(newPicture, y, x) 
      #         ^^^^ (simply invert x and y) 
      color = getColor(sourcePixel) 
      setColor(targetPixel, color) 

    return newPicture 

Отдает:


......... ......... enter image description here .............................. enter image description here ......... ........


Связанный ответ о зеркальном отображении по диагонали here.

 Смежные вопросы

  • Нет связанных вопросов^_^