2013-12-03 5 views
16

Я установил Python Pillow и пытаюсь обрезать изображение.Обрезка изображения с Python Pillow

Другие эффекты отлично работают (например, эскизов, размытость изображения и т.д.)

Всякий раз, когда я запускаю этот код, я получаю ошибку:

tile cannot extend outside image

test_image = test_media.file 
original = Image.open(test_image) 

width, height = original.size # Get dimensions 
left = width/2 
top = height/2 
right = width/2 
bottom = height/2 
cropped_example = original.crop((left, top, right, bottom)) 

cropped_example.show() 

Я использовал обрезку пример Я нашел для PIL, потому что я не мог найти его для Pillow (который, как я предполагал, был бы таким же).

+0

Возможный дубликат http://stackoverflow.com/questions/1076638/trouble-using-python-pil-library-to-crop-and-save-image – adil

ответ

35

Проблема с логикой, а не с подушкой. Подушка почти 100% совместима с PIL. Вы создали изображение размера 0 * 0 (left = right & top = bottom). Никакой дисплей не может это показать. Мой код выглядит следующим образом

from PIL import Image 

test_image = "Fedora_19_with_GNOME.jpg" 
original = Image.open(test_image) 
original.show() 

width, height = original.size # Get dimensions 
left = width/4 
top = height/4 
right = 3 * width/4 
bottom = 3 * height/4 
cropped_example = original.crop((left, top, right, bottom)) 

cropped_example.show() 

Скорее всего, это не то, что вы хотите, но это должно дать вам четкое представление о том, что должно быть сделано.

+0

отлично поработал! – bbrooke

+7

Для кого-то, кто задается вопросом, что это делает, он вырезает внешние края изображения, оставляя вас с центром исходного изображения. Размеры обрезанного изображения составляют половину размеров исходного изображения. Вот пример: если изображение, которое вы обрезаете, равно 100 x 100, 'left' и' top' будут установлены как '25', а' right' и 'bottom' будут установлены на' 75'. Таким образом, вы получите 50 x 50 изображений, которые будут точным центром исходного изображения. – Nick

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