libvips — это управляемая спросом библиотека обработки изображений с горизонтальным потоком. По сравнению с аналогичными библиотеками, libvips работает быстро и использует мало памяти. libvips распространяется под лицензией LGPL-2.1 или более поздней версии.
Он имеет около 300 операций, охватывающих арифметику, гистограммы, свертку, морфологические операции, частотную фильтрацию, цвет, повторную выборку, статистику и другие. Он поддерживает широкий диапазон числовых типов: от 8-битного целого до 128-битного комплекса. Изображения могут иметь любое количество полос. Он поддерживает широкий спектр форматов изображений, включая JPEG, JPEG 2000, JPEG XL, TIFF, PNG, WebP, HEIC, AVIF, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM / PGM / PFM, CSV, GIF, Анализ, NIfTI, DeepZoom и OpenSlide. Он также может загружать изображения через ImageMagick или GraphicsMagick, позволяя работать с такими форматами, как DICOM.
Он поставляется с привязками для C, C++ и командной строки. Полные привязки доступны для:
Язык | Связывание |
---|---|
Руби | руби-випс |
Питон | pyvips |
PHP | php-vips |
С#/.NET | NetVips |
Идти | говипсы |
Луа | Луа-випс |
Кристалл | кристалл-випс |
Эликсир | викс |
JVM | VIP-FFM |
libvips используется в качестве механизма обработки изображений:
острый (на node.js) |
imgproxy |
Бимг |
острый для го |
Рубин на рельсах |
операторская волна-vips |
медиавики |
Фотопоток |
JVips |
и другие. Официальный графический интерфейс libvips — nip2, странная комбинация электронной таблицы и фоторедактора.
Существуют пакеты для большинства Unix-подобных операционных систем, включая macOS. Проверьте свой менеджер пакетов.
В релизах есть бинарные файлы для Windows.
На веб-сайте libvips есть подробные примечания по установке.
libvips использует систему сборки Meson версии 0.56 или новее. В качестве бэкэнда Meson может использовать ninja
, Visual Studio или XCode, поэтому один из них вам тоже понадобится.
libvips должен иметь build-essential
, pkg-config
, libglib2.0-dev
, libexpat1-dev
. Полный список дополнительных зависимостей libvips см. в разделе «Зависимости» ниже.
Базовые дополнения bash находятся в completions/
, см. там README.
cd libvips-x.y.x
meson setup build --prefix /my/install/prefix
cd build
meson compile
meson test
meson install
Внимательно проверьте выходные данные meson setup
и убедитесь, что она нашла все, что вы хотели. Добавьте аргументы в meson setup
чтобы изменить конфигурацию сборки.
Добавьте флаги типа -Dnsgif=false
, чтобы включать и отключать параметры libvips. Список всех параметров сборки, поддерживаемых libvips, см. meson_options.txt
.
Добавьте такие флаги, как -Dmagick=disabled
, чтобы включать и отключать зависимости libvips. См. meson_options.txt
и список ниже для получения сводной информации обо всех зависимостях libvips.
Возможно, вам придется добавить --libdir lib
в Debian, если вы не хотите, чтобы имя арки было в пути к библиотеке.
Добавьте --default-library static
для статической сборки.
Используйте, например, CC=clang CXX=clang++ meson setup ...
для изменения компилятора.
У вас может быть альтернативный каталог сборки, выбирайте любые имена, например, одно для выпуска, а другое для отладки.
Существует более полный набор тестов, который вы можете запустить после установки libvips. Используйте pytest
в базовом каталоге libvips.
Если подходящие версии будут найдены, libvips автоматически добавит поддержку следующих библиотек. Пакеты обычно находятся с помощью pkg-config
, поэтому убедитесь, что он работает.
Все, что совместимо с библиотекой IJG JPEG. Используйте mozjpeg
если можете. Другой вариант — libjpeg-turbo
.
Если доступно, libvips добавляет поддержку метаданных EXIF в файлах JPEG.
Обычный SVG-загрузчик. Если этого нет, VIP вместо этого попытается загрузить SVG через imagemagick.
Если он присутствует, libvips попытается загрузить PDF-файлы с помощью PDFium. Загрузите готовый двоичный файл pdfium с:
https://github.com/bblanchon/pdfium-binaries
Разархивируйте префикс установки libvips, например:
cd ~/vips
tar xf ~/pdfium-linux.tgz
Создайте pdfium.pc
следующим образом (обновите номер версии):
VIPSHOME=/home/john/vips
cat > $VIPSHOME/lib/pkgconfig/pdfium.pc << EOF
prefix=$VIPSHOME
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: pdfium
Description: pdfium
Version: 4290
Requires:
Libs: -L${libdir} -lpdfium
Cflags: -I${includedir}
EOF
Если PDFium не обнаружен, libvips вместо этого будет искать poppler-glib
.
Средство визуализации PDF-файлов Poppler с гибким API. Если его нет, VIP попытается загрузить PDF-файлы через imagemagick.
Если доступно, libvips сохранит GIF-файлы с помощью cgif. Если этого нет, VIP-пользователи вместо этого попытаются сохранить GIF-файлы с помощью imagemagick.
Если доступно, libvips добавляет поддержку создания пирамид изображений с помощью dzsave
.
Библиотека TIFF. Его необходимо создать с поддержкой сжатия JPEG и ZIP. Известно, что версии 3.4b037 и более поздних версий подходят.
Если libvips находит эту библиотеку, она использует ее для преобразований Фурье.
Если они присутствуют, vips_icc_import()
, vips_icc_export()
и vips_icc_transform()
можно использовать для управления изображениями с помощью профилей ICC.
Если он присутствует, libvips будет загружать и сохранять файлы PNG с помощью libspng. Если нет, он будет искать стандартный пакет libpng.
Если присутствует один из этих пакетов квантования, libvips может записывать PNG и GIF с 8-битной палитрой.
Если доступно, libvips добавляет поддержку загрузки и сохранения всех типов файлов изображений, поддерживаемых libMagick. Вы можете включать и отключать загрузку и сохранение отдельно.
Imagemagick 6.9+ должен быть собран с использованием --with-modules
. Я думаю, что большинство пакетных мгновенных сообщений таковы.
Если вы собираетесь использовать libvips с ненадежными изображениями, например, на веб-сервере, вам следует учитывать последствия для безопасности включения пакета с такой большой поверхностью атаки.
Если доступно, libvips добавляет поддержку рендеринга текста. Вам понадобится пакет pangocairo в pkg-config --list-all
.
Если присутствует, libvips ускорит некоторые операции с SIMD. Если нет, он будет искать пакет orc-0.4.
Если доступно, VIP-персоны могут загружать изображения из файлов сохранения Matlab.
Если доступно, VIP-персоны могут загружать изображения FITS.
Если доступно, VIP-персоны могут загружать и сохранять изображения WebP.
Если доступно, VIP-персоны могут загружать и сохранять изображения NIfTI.
Если доступно, libvips будет напрямую читать (но, к сожалению, не записывать) изображения OpenEXR.
Если доступно, libvips будет читать и записывать изображения JPEG2000.
Если доступно, libvips будет читать и записывать изображения JPEG-XL.
Если доступно, libvips может загружать файлы виртуальных слайдов, поддерживаемые OpenSlide: Aperio, Hamamatsu, Leica, MIRAX, Sakura, Trestle и Ventana.
Если доступно, libvips может загружать и сохранять изображения HEIC и AVIF. Ваш libheif (в свою очередь) должен быть построен с использованием правильных декодеров и кодировщиков. Вы можете проверить, например:
$ heif-convert --list-decoders
HEIC decoders:
- libde265 = libde265 HEVC decoder, version 1.0.9
AVIF decoders:
- dav1d = dav1d v6.6.0
- aom = AOMedia Project AV1 Decoder v3.5.0
$ heif-enc --list-encoders
HEIC encoders:
- x265 = x265 HEVC encoder (3.5+1-f0c1022b6) [default]
AVIF encoders:
- aom = AOMedia Project AV1 Encoder v3.5.0 [default]
- svt = SVT-AV1 encoder v1.1.0
- rav1e = Rav1e encoder
Этот проект существует благодаря всем людям, которые вносят свой вклад.
Мы получили щедрую финансовую поддержку от наших спонсоров. Большое спасибо!