У вас включен AdBlock или иной блокировщик рекламы.

Пожалуйста, отключите его, доход от рекламы помогает развитию сайта и появлению новых статей.

Спасибо за понимание.

В другой раз
DevGang блог о програмировании
Авторизоваться

Python - как сделать преобразование типа изображения в шесть строк

Одним из преимуществ работы программиста является ваша способность создавать утилиты для улучшения вашей жизни. В отличие от непрограммиста, вы, вероятно, не тратите часы, просматривая несколько страниц результатов поиска Google, чтобы найти инструмент, который, в первую очередь, должен был повысить вашу производительность (ирония). Это, вероятно, заставляет вас чувствовать себя более сильным, зная язык программирования, особенно если этот язык программирования столь же универсален и великолепен, как и Python.

Один из пунктов в Дзэн Python говорит:

Простое лучше, чем сложное.

Учитывая эту философию, многие нишевые инструменты разработки с использованием Python могут быть выполнены настолько кратко, что меня удивляет, стоит ли вообще называть его инструментом. Иногда слово сценарий будет более точным. В любом случае, мы собираемся создать один такой скрипт, который преобразует изображения из одного формата файла (типа изображения) в другой - всего за 6 строк кода.

В этом уроке мы собираемся создать конвертер типа изображения, который преобразует изображение PNG в изображение JPG. Прежде чем ваши клетки серого вещества поспешат судить, сошел ли я с ума от создания этого инструмента, позвольте мне сказать, что это не только для одного изображения - но и для всех изображений в папке. 

Выбираем инструмент в Python

Для этой цели мы собираемся использовать пакет PIL Python (что означает Python Image Library). Оригинальный PIL не получал никаких обновлений для последней версии Python, поэтому некоторые хорошие люди создали дружественный форк под названием Pillow, который поддерживает даже Python 3.x.

Устанавливаем пакет:

pip3 install Pillow

Приступим

В этом коде есть два основных раздела. В первом разделе мы импортируем требуемые пакеты, а во втором разделе происходит фактическая операция. Фактическая операция может быть далее разбита следующим образом:

  1. Перебираем все файлы с заданным расширением - в нашем случае .png
  2. Зачитываем файл с изображением
  3. Преобразуем файл в другой формат (RGB)
  4. Наконец сохраняем файл - с новым расширением .jpg
from PIL import Image
import glob

for file in glob.glob("*.png"):
    im = Image.open(file)
    rgb_im = im.convert('RGB')
    rgb_im.save(file.replace("png", "jpg"), quality=95)

Мы воспользовались пакетом glob для перебора файлов в текущей папки в ОС.

Вот и все! 6 строк кода (без пробела конечно же) и у вас готова утилита для конвертирования файлов из одного формата в другой. В дальнейшем ее можно преобразовать и добавить возможность передачи например типа файла с помощью параметров в командной строке.

#Python

Присоеденяйся в тусовку

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

Попробовать