2015-03-30 2 views
2

Я пытаюсь перевернуть изображение по горизонтали по пикселям с помощью for-loops. Если возможно, попробуйте исправить то, что у меня есть, вместо того, чтобы предлагать совершенно другой подход (даже более эффективный или питонический), чтобы помочь мне и другим учиться на моих ошибках. Спасибо за любую помощь.Python - Отразить изображение горизонтально, используя для Loop

def flip(img): 
    width = img.size[0] 
    height = img.size[1] 
    for y in range(height): 
     for x in range(width): 
      left = img.getpixel((x, y)) 
      right = img.getpixel((width - 1 - x, y)) 
      img.putpixel((width - 1 - x, y), left) 
      img.putpixel((x, y), right) 
+0

есть ли причина, почему вы изобретать велосипед, а не использовать подушку или палочку, к примеру? – Marcin

+1

Я смущенно признаю, что это для упражнений класса, поэтому мы должны избегать ярлыков, чтобы понять основы. Я все еще думаю, что это может быть полезно для других. –

ответ

6

Вам необходимо остановить половину пути по оси X. В противном случае вы замените все пиксели на их исходные позиции.

for x in range(width // 2): 
+0

Awesome. Спасибо за помощь. –

4

Вы идете по всему образцу, но к тому времени, когда у вас есть на полпути, вы уже перевернули изображение. Поэтому, пройдя остаток пути, вы переверните его обратно так, как это было.

Итак:

for x in range(width//2): 
+0

Отлично. Благодарю. –

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