Поворот изображения, как исправить «Ошибка индекса: индекс изображения вне диапазона»?Python

Программы на Python
Ответить
Anonymous
 Поворот изображения, как исправить «Ошибка индекса: индекс изображения вне диапазона»?

Сообщение Anonymous »

Я пытаюсь повернуть изображение в Python, копируя каждый отдельный пиксель в новое пустое изображение (я знаю, возможно, это не лучший способ сделать это, но это то, для чего у меня есть теоретическая база знаний). Исходное изображение имеет ширину 360 пикселей и высоту 480 пикселей. В моем коде возникают ошибки, поэтому я вставил обе соответствующие функции. Единственный раз, когда я не получаю сообщение об ошибке, это когда мой диапазон для y меньше трех.
def rotate(img):
height = int(img.getHeight())
width = int(img.getWidth())
turn = image.EmptyImage(height, width)
xs = 0
ys = 0
for y in range(height):
for x in range(width):
px = img.getPixel(x, y)
r = px.getRed()
g = px.getGreen()
b = px.getBlue()
turnpx = image.Pixel(r, g, b)
turn.setPixel(x+(width-xs), y, turnpx)
xs+=1
return turn

def main():
img6 = image.Image("images//arch.gif")
img7 = rotate(img6)
if img7:
win7 = image.ImageWin(img7.getWidth(), img7.getHeight(), "Win7")
img7.draw(win7)

main()

Я получаю следующие сообщения об ошибках:
Traceback (most recent call last):
File "C:\programs\test.py", line 28, in
main()
File "C:\programs\test.py", line 23, in main
img7 = rotate(img6)
File "C:\programs\test.py", line 17, in rotate
turn.setPixel(x+(width-xs), y, turnpx)
File "C:\programs\image.py", line 467, in setPILPixel
self.im.putpixel((x,y),pixel.getColorTuple())
File "C:\programs\anaconda3\Lib\site-packages\PIL\Image.py", line 2136, in putpixel
return self.im.putpixel(xy, value)
IndexError: image index out of range


Подробнее здесь: https://stackoverflow.com/questions/798 ... t-of-range
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»