Об этом проекте

pyvips — это привязка Python к библиотеке обработки изображений libvips, реализованная с помощью cffi. Она оборачивает libvips, позволяя программам на Python использовать её операции, и проходит набор тестов vips без утечек в python3 и pypy3 на Windows, macOS и Linux. Принцип работы Программы, использующие pyvips, не манипулируют изображениями напрямую. Вместо этого они создают конвейеры операций обработки изображений, построенные на исходном изображении. Когда конец конвейера подключается к месту назначения, весь конвейер выполняется сразу, передавая изображение параллельно от источника к месту назначения по частям. Благодаря параллельности он работает быстро, а поскольку нет необходимости хранить целые изображения в памяти, он лёгкий. В README приводится тест производительности и памяти libvips, где тест, загружающий большой TIFF, уменьшающий его на 10%, повышающий резкость и сохраняющий снова, обычно работает примерно в 3 раза быстрее, чем ImageMagick, и требует примерно в 5 раз меньше памяти. Установка Самый быстрый путь — бинарный пакет: pip install "pyvips[binary]". Он устанавливает автономный пакет с наиболее часто нужными библиотеками и должен работать на большинстве платформ, включая Linux, Windows и macOS, на 64- и 32-битных процессорах x64 и ARM. Входящая в комплект libvips не имеет таких функций, как загрузка PDF и поддержка OpenSlide. Либо установите libvips отдельно. Вам нужна разделяемая библиотека libvips в пути поиска библиотек, версии 8.2 или новее, хотя для всех функций требуется как минимум 8.9. В Linux, например, apt install libvips-dev, затем pip install pyvips; для Python 3.11 и новее сначала нужен venv. В macOS с Homebrew: brew install vips python pkg-config, затем pip install pyvips. В Windows скачайте предварительно скомпилированный бинарный файл с сайта libvips, используйте 64-битный Python и либо добавьте vips-dev-x.y\bin в PATH, либо задайте PATH из программы (используя os.add_dll_directory на Python 3.8+). Пакет Conda включает соответствующий бинарный файл libvips: conda install --channel conda-forge pyvips. Режимы сборки Если установлены заголовочные файлы разработки для libvips и доступен рабочий компилятор C, модуль использует режим cffi API для сборки бинарного расширения libvips для вашего Python. Если не удаётся собрать бинарное расширение, он переходит в режим cffi ABI, для которого нужна только разделяемая библиотека libvips; это занимает больше времени при запуске и обычно работает примерно на 20% медленнее. Проверить, используется ли режим API, можно с помощью pyvips.API_mode. Пример Пример программы загружает JPG с последовательным доступом, умножает значение каждого зелёного пикселя на два (image *= [1, 2, 1]), повышает резкость с помощью маски свёртки и записывает изображение обратно в файловую систему. Примечания к разработке В README перечислены команды для локальных редактируемых установок, запуска всех тестов с tox, запуска набора тестов или конкретного теста с pytest, запуска тестов производительности, проверки стиля с flake8 и генерации HTML-документации с sphinx-build. Подсказки типов предоставляются через файлы заглушек PEP 561 (pyvips/__init__.pyi), пригодные для использования с mypy, хотя методы принимают произвольные именованные аргументы для параметров libvips, которые могут быть не полностью покрыты подсказками. Задачи по сопровождению включают регенерацию перечислений из GIR libvips, регенерацию заглушек типов, регенерацию автодокументации, обновление номеров версий и сборку и загрузку пакета PyPI.