Опубликовано несколько значительных обновлений библиотеки декодирования изображений SAIL, предоставляющей переписанный на С ребрендинг кодеков из давно не поддерживаемой программы просмотра изображений KSquirrel, но с наличием высокоуровневого абстрактного API и многочисленными улучшениями. Библиотека готова для использования, но всё ещё непрерывно улучшается. Бинарная и API совместимость пока не гарантируется. Демонстрация.
Особенности SAIL
- Быстрая и простая в использовании библиотека;
- Написана на C11 c биндингами к C++17;
- Поддержка форматов изображений реализована динамически загружаемыми кодеками, которые можно удалять и добавлять независимо от клиентской части;
- Чтение из файла, памяти, собственных источников;
- Поддержка многостраничных и анимированных изображений;
- Поддержка популярных форматов всё же делается с помощью соответствующих библиотек libjpeg, libpng, и т.д.
- Кросс-платформенность: Linux, Windows, macOS;
- “Прощупывание” (probing) – получение информации об изображении без декодирования пикселей;
- Человеческие названия сущностей (никаких FIMULTIBITMAP);
- Чтение и запись ICC профилей;
- Отдаёт RGBA или BGRA пиксели;
- Отдаёт исходные пиксели (например, CMYK) если поддерживаются кодеком;
Список изменений с момента прошлой публикации:
- Значительно улучшено и упрощено API.
Было: struct sail_context *context; SAIL_TRY(sail_init(&context)); struct sail_image *image; unsigned char *image_pixels; SAIL_TRY(sail_read(path, context, &image, (void **)&image_pixels)); … free(image_pixels); sail_destroy_image(image);Стало:
struct sail_image *image; SAIL_TRY(sail_read_file(path, &image); … sail_destroy_image(image);
- Добавлены форматы BMP, GIF, TIFF;
- Доступность в VCPKG на всех платформах кроме UWP;
- Опубликованы сравнительные тесты производительности;
- Биндинг C++ переведён на C++17;
- Функции выделения памяти собраны в одном месте, чтобы их было легко заменить на свои, но на данный момент это можно сделать только перекомпиляцией;
- Пользователи теперь могут использовать CMake find_package() для подключения SAIL;
- Добавлена возможность статической компиляции (SAIL_STATIC=ON);
- Добавлена возможность компиляции всех кодеков в одну общую библиотеку (SAIL_COMBINE_CODECS=ON);
- Начата работа по добавлению тестов на основе µnit;
Рекомендуемый метод установки
- Linux – vcpkg, также доступны Debian rules
- Windows – vcpkg
- macOS – brew
Release.
Ссылка here.