Jython/Python - перелистывание изображения по горизонтали
Я пытаюсь "разрезать" картинку пополам и перевернуть обе стороны по горизонтали. Смотрите ссылку ниже.
Исходное изображение:
Какой результат должен быть:
Что я получаю
Это то, что у меня есть, но все, что он делает, это переворачивает картинку по горизонтали
def mirrorHorizontal(picture):
mirrorPoint = getHeight(picture)/2
height = getHeight(picture)
for x in range(0, getWidth(picture)):
for y in range(0, mirrorPoint):
topPixel = getPixel(picture, x, y)
bottomPixel = getPixel(picture, x, height - y - 1)
color = getColor(topPixel)
setColor(bottomPixel, color)
Так как мне перевернуть каждую сторону по горизонтали, чтобы она выглядела как вторая картинка?
2 ответа
Один из подходов заключается в определении функции для переворачивания части изображения по горизонтали:
def mirrorRowsHorizontal(picture, y_start, y_end):
''' Flip the rows from y_start to y_end in place. '''
# WRITE ME!
def mirrorHorizontal(picture):
h = getHeight(picture)
mirrorRowsHorizontal(picture, 0, h/2)
mirrorRowsHorizontal(picture, h/2, h)
Надеюсь, это даст вам начало.
Подсказка: вам может понадобиться поменять местами два пикселя; чтобы сделать это, вы захотите использовать временную переменную.
Год спустя, я думаю, мы можем дать ответ:
def mirrorRowsHorizontal(picture, y_start, y_end):
width = getWidth(picture)
for y in range(y_start/2, y_end/2):
for x in range(0, width):
sourcePixel = getPixel(picture, x, y_start/2 + y)
targetPixel = getPixel(picture, x, y_start/2 + y_end - y - 1)
color = getColor(sourcePixel)
setColor(sourcePixel, getColor(targetPixel))
setColor(targetPixel, color)
def mirrorHorizontal(picture):
h = getHeight(picture)
mirrorRowsHorizontal(picture, 0, h/2)
mirrorRowsHorizontal(picture, h/2, h)
Взято из вертикального флип здесь.
Пример с 3 полосами:
mirrorRowsHorizontal(picture, 0, h/3)
mirrorRowsHorizontal(picture, h/3, 2*h/3)
mirrorRowsHorizontal(picture, 2*h/3, h)
До:
После: