Найти в Дзене
Каждодневье

Конвертация изображений в webp через Python

Встала задача все изображения в папке сконвертировать в webp, но нормального конвертера я не нашел. В интернете есть конвертеры, но они сжимают на своих правилах или размер изображения ограничен в пикселях.

Поэтому я решил поискать конвертер официального распространителя.
Скачал и с указанными параметрами конвертер через командную строку сделал то, что мне требовалось и с условиями, которые я ему задал сам.

Осталось сделать автоматизацию, чтобы Python взял картинки из нужной папочки и прогнал в заданных условиях через конвертер. Итоговый вариант положил в другую папочку.

Цель - максимально-простой конвертер, который берет любой вид изображений. Не стал делать проверки на то, изображения это или нет, исключения ставить. Нужен был код в 10 строк для конвертации 500 000 заранее отфильтрованных изображений (у меня столько картинок из обслуживаемого сайта).

1. скачать официальный кодировщик в webp cwebp

2. из скачанного архива в папке bin достать файлик cwebp.exe

3. положить этот файлик в рабочую папочку скрипта

4. создать в рабочей папке каталог in - наполнить картинками

5. создать в рабочей папке каталог out - сюда упадут webp

Проверить что все как-то так:

Иерархия папки для скрипта-конвертера
Иерархия папки для скрипта-конвертера

А так выглядит содержимое моего conv.py:

Сам скрипт
Сам скрипт

1-2 строки - импорт родных модулей python

4 - степень сжатия итогового файла

5-8 - рабочий цикл, в котором:

6 - наименование картинки разбивается по точке и берется первая часть (имя до точки)

7 - команда, которая будет вызвана из Python.

Сама команда оформлена в ввиде f-строки (r- игнорировать ошибки PEP, воспринимать как строку). Параметры вы можете добавлять сами, если посчитаете нужным.

а 8 строка вызывает из питона внешнее приложение (указано в f-строке) с параметрами, которые идут после.

Надеюсь в определенный момент изучения языка программирования этот пост вам пригодится.

Подписывайтесь, ставьте лайки. Я очень надеюсь на долгосрочное развитие этого канала. Мне важен любой комментарий, совет или наставление. Мира вам :-)