Какой фильтр использовать в Pillow для уменьшения картинок?
Большинство python-разработчиков при работе с изображениями используют в своих проектах библиотеку Pillow, перекрывающую подавляющее большинство задач, решаемых при разработке сайтов. Она поддерживает работу с наиболее популярными форматами в вебе — JPG, PNG, GIF.
Наиболее частая операция — изменение размеров картинки. Например, на вход подаётся изображение большого размера, а на выходе требуется получить маленькую превьюшку. С этой задачей легко справляется метод resize
. Вторым аргументом функция принимает фильтр, определяющий алгоритм даунскейлинга картинки. От его выбора зависит качество результирующего изображения. Многие разработчики используют фильтр Bicubic — new_image = new_image.resize((width_custom, height_custom), Image.BICUBIC)
. Однако по факту гораздо лучшее сглаживание контрастных частей картинки даёт фильтр Lanczos.
На примере выше показан результат обработки картинки фильтрами Bicubic (слева) и Lanczos (справа). Уменьшение картинки с помощью фильтра Bicubic приводит к тому, что белая диагональная контрастная линия становится прерывистой, почти пунктирной.
Однако есть минус в масштабировании картинки фильтром Lanczos — размер итоговой картинки получается процентов на 10-15 больше, чем при сжатии картинки фильтром Bicubic.
Добавить комментарий