Ультра быстрая обработка картинок с 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 секунд. Результаты следующие:
Imagemagick1.7 файлов в секунду |
|
Pillow-SIMD6.3 файлов в секунду |
Как видно, в нашем случае Pillow-SIMD показал в 4 раза большую скорость обработки, чем ImageMagick.
<h2>TL;DR
Используйте Pillow-SIMD для обработки изображений, если для вас важна производительность.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: