класс Image не имеет атрибута «открыто»

Возможный дубликат:
img = Image.open(fp) AttributeError: у класса Image нет атрибута "открыто"

Поэтому я пытаюсь просматривать изображения на питоне с помощью tkinter. Я установил PIL и пытаюсь открыть изображение, но постоянно получаю сообщение об ошибке атрибута, говорящее: «Класс Изображение не имеет атрибута «открыть».

from __future__ import division
from PIL import Image
from Tkinter import *
import random

img = Image.open("majestic creature.jpeg").convert("RGB")

Это не весь код, который у меня есть, но это часть, с которой у программы, похоже, проблемы.


person Clockwork    schedule 11.11.2012    source источник
comment
Я уже видел этот пост. Я попробовал решение, и оно выдало мне другую ошибку: IOError: невозможно идентифицировать файл изображения.   -  person Clockwork    schedule 12.11.2012
comment
отредактировал комментарий, включив ошибку. Предварительно нажал энтер.   -  person Clockwork    schedule 12.11.2012
comment
вы уверены, что это не majestic creature.jpg (не jpeg) или опечатка в имени файла?   -  person tckmn    schedule 12.11.2012
comment
нет, я только что проверил, это jpg. Я попытался изменить его на jpeg, но выдал другую ошибку: IOError: [Errno 2] Нет такого файла или каталога: 'majestic Creature.jpeg'   -  person Clockwork    schedule 12.11.2012
comment
подождите, в вашем коде это jpeg. Вы сказали в комментарии, что имя файла заканчивается на jpg. В этом проблема? Кроме того, оно пишется величественно. Это опечатка или файл так называется?   -  person tckmn    schedule 12.11.2012
comment
Таким образом, была некоторая путаница в типе файла, но я изменил его, чтобы убедиться, что они согласованы, и он по-прежнему выдает ошибку: IOError: не удается идентифицировать файл изображения.   -  person Clockwork    schedule 12.11.2012
comment
эм... извините, я понятия не имею об этом сейчас   -  person tckmn    schedule 12.11.2012
comment
Знаете ли вы, есть ли какие-либо ресурсы, которые вы можете предложить, чтобы помочь мне? Это для задания, и я часами пытался понять эту ошибку, но безрезультатно.   -  person Clockwork    schedule 12.11.2012
comment
Это может немного помочь. Если вы разделите оператор на две строки (первая открывает изображение, вторая преобразует в rgb), может быть проще найти вашу проблему. Также небольшая проблема, но вы, возможно, захотите избежать использования имен файлов с пробелами в них.   -  person Anake    schedule 12.11.2012
comment
Если вы знали о связанном вопросе, который точно охватывает проблему, которую вы задали в вопросе, то почему вы задали другой вопрос по той же теме, хотя у вас совершенно другая ошибка?   -  person poke    schedule 12.11.2012
comment
Пожалуйста, вставьте свою трассировку, не расшифровывайте ее.   -  person Matthew Trevor    schedule 12.11.2012


Ответы (1)


Судя по тому, что вы сказали, а именно This is not all of the code.
Вы или какой-то другой импорт объявил некоторую переменную/класс с именем Image, и это перезаписало класс Image, который был импортирован PIL.

Чтобы специально использовать класс PIL Image, используйте:

img = PIL.Image.open("majestic creature.jpeg").convert("RGB")
person Serdalis    schedule 11.11.2012
comment
Я не знаю почему, но если я сначала импортирую from Tkinter import* и до from PIL import Image, это сработает. - person Marcelo Gazzola; 28.01.2021
comment
Вероятно, потому что у TKinter есть класс изображения, который импорт PIL переопределяет, когда он находится после from Tkinter import *. Кстати, по этой причине я всегда поощряю явный экспорт. epydoc.sourceforge.net/stdlib/Tkinter-module.html - person Serdalis; 29.01.2021