Подтвердить что ты не робот

Как настроить качество измененного изображения в библиотеке изображений Python?

Я работаю над PIL и должен знать, можно ли регулировать качество изображения при изменении размера или уменьшении изображения. Из того, что я знаю, значение по умолчанию установлено на 85. Можно ли настроить этот параметр при изменении размера?

В настоящее время я использую следующий код:

image = Image.open(filename)
image.thumbnail((x, y), img.ANTIALIAS)

Параметр ANTIALIAS, по-видимому, дает лучшее качество. Мне нужно знать, можем ли мы получить дополнительную детализацию по качеству.

4b9b3361

Ответ 1

Использовать метод PIL resize вручную:

image = image.resize((x, y), Image.ANTIALIAS)  # LANCZOS as of Pillow 2.7

В соответствии с методом сохранения

quality_val = 90
image.save(filename, 'JPEG', quality=quality_val)

Взгляните на источник models.py из Photologue, чтобы узнать, как они это делают.

Ответ 2

ANTIALIAS никоим образом не сравнится с уровнем качества "85". Параметр ANTIALIAS сообщает методу эскизов, какой алгоритм используется для передискретизации пикселей от одного размера к другому. Например, если у меня есть изображение 3x3, которое выглядит так:

2 2 2
2 0 2
2 2 2

и я изменяю его размер до 2x2, один алгоритм может дать мне:

2 2
2 2

потому что большинство пикселей около 2s, а другая может дать мне:

1 1
1 1

чтобы принять во внимание 0 в середине. Но вы все еще не начали заниматься сжатием, и не будете, пока не сохраните изображение. Это означает, что в миниатюре вы не имеете дело с градациями качества, а с дискретными алгоритмами для повторной дискретизации. Так что нет, вы не можете получить более тонкий контроль здесь.

Если вы сохраняете формат с сжатием с потерями, это место, чтобы указать уровни качества.

Ответ 3

Не путайте масштабирование и сжатие.

Для лучшего качества вы должны использовать оба. См. Следующий код:

from PIL import Image

image = Image.open(filename)
image.thumbnail((x, y), Image.ANTIALIAS)
image.save(filename, quality=100)

Таким образом, у меня очень хорошие пальцы в моих программах.

Ответ 5

Одним из способов достижения лучшего качества является уменьшение масштаба в два этапа. Например, если исходное изображение 1200x1200, и вам нужно изменить его размер до 64x64 пикселей, то на первом шаге уменьшите его до середины этих двух размеров:

1200x1200 → 600x600 → 64x64