Випуск бібліотеки декодування зображення SAIL 0.9.0-pre12

Опубліковано декілька значних оновлень бібліотеки декодування зображень 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

Додати коментар або відгук