2015-12-14 1 views
2

я пытался сделать следующий скрипт работает правильно:Использование Python 3.4 и подушки и метод преобразования: AttributeError: Image

def tftest(): 
    from PIL import Image 
    picture = "ttamet3dim.png" 
    impict = Image.open(picture) 
    transf = impict.Image.transform((78,78), Image.QUAD, (78,41,178,27,183,91,81,91), Image.BICUBIC) 
    imt = Image.open(transf) 
    imt.show() 

Но я получаю следующее сообщение об ошибке:

File "C:\Python34\tftest.py", line 5, in tftest 
    transf = impict.Image.transform(...) 
File "C:\Python34\lib\site-packages\pillow-3.0.0-py3.4-win32.egg\PIL\Image.py", line 626, in __getattr__ 
AttributeError: Image 

Это впервые я использую "transform". Я хотел взглянуть на сценарий "transform", чтобы узнать, могу ли я узнать, что случилось, но мой Pillow - это .egg, поэтому я не нашел, как получить доступ к этому коду. Вы знаете, почему я получаю эту ошибку и как ее исправить? Спасибо, С наилучшими пожеланиями

ответ

0

Вы назначены Image к impict переменная здесь:

impict = Image.open(picture) 

y НУ должны ссылаться на эту переменную, это открыто изображение, с преобразованием:

impict.transform 

вместо того, что вы сейчас делаете (в основном Image.open(picture).Image.transform).

+0

Спасибо. Он работает, но «преобразование» работает по-другому, чем я мог найти в документации. Например, если все наоборот: обычно я должен давать четыре угла в счетчике по часовой стрелке, но я должен давать их по часовой стрелке; обычно я даю сначала строку, а затем столбец здесь, это наоборот. И изображение, которое я получаю в конце, представляет собой прямоугольник с правильным размером, но также является осевой симметрией. Почему он также делает осевую симметрию? Я, хотя это «преобразование», должен только менять четырехугольник в прямоугольник с заданным размером. – Virginie

+0

Stackoverflow - это вопрос/формат ответа - откройте еще один вопрос, где вы сейчас застряли, и кто-то, скорее всего, придет и поможет вам. –

2

transform является методом Image объектов и возвращает новое изображение:

from PIL import Image 

def tftest(): 
    picture = "ttamet3dim.png" 
    impict = Image.open(picture) 
    imt = impict.transform((78,78), Image.QUAD, (78,41,178,27,183,91,81,91), Image.BICUBIC) 
    imt.show() 
1

Попробуйте изменить transf = impict.Image.transform к transf = impict.transform

+0

Я не согласен. Эта инструкция делает код автора правильным. Потому что ошибка была в этой строке. Другие строки верны. – mrvol