Опубліковано декілька значних оновлень бібліотеки декодування зображень SAIL, що надає переписаний на С ребрендинг кодеків з програми перегляду зображень KSquirrel, що давно не підтримується, але з наявністю високорівневого абстрактного API і численними поліпшеннями. Бібліотека готова до використання, але все ще безперервно покращується. Бінарна та API сумісність поки що не гарантується. Демонстрації.
Особливості SAIL
- Швидка та проста у використанні бібліотека;
- Написана на C11 з биндингами 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
Джерело: opennet.ru