Рубріки: HighloadТеория

Ультра быстрая обработка картинок с Pillow-SIMD

Игорь Грегорченко

Imagemagick – один из самых популярных инструментов для обработки картинок. Не смотря на почти бесконечный набор функций, этот инструмент обычно используют для довольно простых операций:

  • Изменение размеров (ресайз) картинок для подготовки превью (thumbnails).
  • Преобразование форматов.

Pillow-SIMD – это альтернативная библиотека, которая способна выполнять эти операции в 5…15 раз быстрее, чем ImageMagick.

Почему так быстро?

SIMD (“single instruction, multiple data”) – это способность современных платформ выполнять одну и ту же операцию над разными данными одновременно. Эту возможность можно использовать и для ускорения преобразования изображений. Pillow-SIMD эту и другие оптимизации, чтобы обеспечить ультра быструю обработку картинок.

Установка

Для того, чтобы использовать инструмент, вам понадобится Python и pip:

apt-get install python-pip

Кроме этого убедитесь, что установлены следующие библиотеки:

apt-get install libzl zlib1g-dev libjpeg-dev

Чтобы установить Pillow-SIMD, нужно выполнить такую инструкцию:

CC="cc -mavx2" pip install -U --force-reinstall pillow-simd

Использование

На данный момент у библиотеки Pillow-SIMD нет интерфейса командной строки, поэтому напишем небольшой скрипт на Python’e:

from PIL import Image

resize_width = 320

infile = “test.jpg”

outfile = “test.thumbnail.jpg”

img = Image.open(infile)

wpercent = (resize_width/float(img.size[0]))

hsize = int((float(img.size[1])*float(wpercent)))

img = img.resize((resize_width,hsize), Image.ANTIALIAS)

img.save(outfile)

## Меняем размер картинки на 320px по ширине с сохранением пропорций

Чтобы проверить работу скрипта:

python test.py

## ничего не увидим, но появится картинка test.thumbnail.jpg

Сравнение с Imagemagick

Проведем сравнение Pillow-SIMD с Imagemagick. Гонять будем на 40 обычных фотках, снятых на обычный фотоаппарат (вроде Canon). Каждая картинка размером от 4Мб до 6Мб, разрешением 5184×3456. Платформа – обычный CPU optimized сервер с 2 ядрами. Тест происходит на одной и той же платформе, последовательно.

Каждый тест был выполнен 10 раз. В качестве результатов представлено количество изображений, обработанное инструментом за 5 секунд. Результаты следующие:

Imagemagick

1.7 файлов в секунду


Pillow-SIMD

6.3 файлов в секунду








Как видно, в нашем случае Pillow-SIMD показал в 4 раза большую скорость обработки, чем ImageMagick.

<h2>TL;DR

Используйте Pillow-SIMD для обработки изображений, если для вас важна производительность.

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023