Обрезка изображения - функция Image.crop не работает - PullRequest
3 голосов
/ 12 октября 2011

У меня есть следующая строка кода для обрезки изображения

im = Image.open('path/to/image.jpg')

outfile = "path/to/dest_img.jpg"
im.copy()

im.crop((0, 0, 500, 500))
im.thumbnail(size, Image.ANTIALIAS)
im.save(outfile, "JPEG")

Но это не похоже на обрезку изображения. У меня больше размер изображения, например 2048 x 1536 пикселей.

[редактировать]

Вот и решение, я сам не смог ответить на этот вопрос, поэтому добавляю ответ сюда.

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

crop_img = im.crop((0, 0, 500, 500))

Полный код ниже:

im = Image.open('path/to/image.jpg')

outfile = "path/to/dest_img.jpg"
im.copy()

crop_img = im.crop((0, 0, 500, 500))
crop_img.thumbnail(size, Image.ANTIALIAS)
crop_img.save(outfile, "JPEG")

Обратите внимание, после строки обрезки используется обработчик crop_img.

Ответы [ 2 ]

5 голосов
/ 12 октября 2011

Вы забыли присвоить возвращаемые значения в некоторых выражениях.

im = Image.open('path/to/image.jpg')

outfile = "path/to/dest_img.jpg"

im = im.crop((0, 0, 500, 500))
im = im.thumbnail(size, Image.ANTIALIAS)
im.save(outfile, "JPEG")
2 голосов
/ 12 октября 2011

Вы, безусловно, хотите сделать это:

from PIL import Image
im = Image.open('sth.jpg')

outfile = "sth2.jpg"
region=im.crop((0, 0, 500, 500))
#Do some operations here if you want but on region not on im!
region.save(outfile, "JPEG")
...