SAIL кескінді декодтау кітапханасы қолжетімді

MIT лицензиясы бойынша жарияланған кросс-платформалық кескінді декодтау кітапханасы SAIL. SAIL — C тілінде қайта жазылған ұзақ уақыт бойы қолдау көрсетілмейтін кескінді қарау құралының кодектерінің ребрендингі. Kтиін, бірақ жоғары деңгейлі дерексіз API және көптеген жақсартулармен. Мақсатты аудитория: суретті көрушілер, ойын әзірлеу, басқа мақсаттар үшін суреттерді жадқа жүктеу. Кітапхана әзірлену үстінде, бірақ қазірдің өзінде пайдалануға жарамды. Дамудың осы кезеңінде екілік және бастапқы кодтың үйлесімділігіне кепілдік берілмейді.

Ерекшеліктер:

  • Үшінші тарапқа тәуелділіксіз C тілінде жазылған қарапайым, ықшам және жылдам кітапхана (кодектерден басқа);
  • Қарапайым, түсінікті және сонымен бірге барлық қажеттіліктерге арналған қуатты API;
  • C++ үшін байланыстырулар;
  • Кескін пішімдеріне динамикалық жүктелген кодектер қолдау көрсетеді;
  • Файлдан, жадтан немесе тіпті жеке деректер көзінен кескіндерді оқу (және жазу);
  • Кескін түрін файл кеңейтімі бойынша немесе бойынша анықтау сиқырлы сан;
  • Қазіргі уақытта қолдау көрсетілетін форматтар: png (оқу, тек Windows), JPEG (оқу, жазу) PNG (оқу, жазу).
    Жаңа форматтарды қосу жұмыстары жүргізілуде. KSquirrel-libs 60-қа жуық пішімдерді қандай да бір жолмен қолдады, ең танымал форматтар бірінші кезекте;

  • Оқу операциялары әрқашан RGB және RGBA пішіміндегі пикселдерді шығара алады;
  • Кейбір кодектер пикселдерді пішімдердің одан да үлкен тізімінде шығара алады;
  • Көптеген кодектер SOURCE пикселдерін де шығара алады. Бұл, мысалы, CMYK немесе YCCK кескіндерінен толық ақпарат алғысы келетіндер үшін пайдалы;
  • ICC профильдерін оқу және жазу;
  • C, Qt, SDL мысалдары;
  • Қолдау көрсетілетін платформалар:
    Windows (орнатқыш), macOS (brew) және Linux (Debian).

SAIL нені қамтамасыз етпейді:

  • Суретті өңдеу;
  • Негізгі кодектер (libjpeg, т.б.) қамтамасыз ететіндерден басқа түс кеңістігін түрлендіру функциялары;
  • Түстерді басқару функциялары (ICC профильдерін пайдалану және т.б.)

Си тілінде декодтаудың қарапайым мысалы:

struct sail_context *мәтін;

SAIL_TRY(sail_init(&контекст));

struct sail_image *сурет;
unsigned char *image_pixels;

SAIL_TRY(желкен_оқу(жол,
контекст,
&сурет,
(жарамсыз **)&сурет_пиксельдері));

/*
* Мұнда қабылданған пикселдерді өңдеңіз.
* Ол үшін сурет->ені, сурет->биіктік, сурет->әр_жолға_байт,
* және сурет->пиксель_пішімі.
*/

/* Жинап қою */
бос (сурет_пиксельдері);
желкенді_жою_сурет(сурет);

API деңгейлерінің қысқаша сипаттамасы:

  • Жаңадан келген: «Мен бұл JPEG файлын жүктеп алғым келеді»
  • Жетілдірілген: «Мен бұл анимациялық GIF файлын жадтан жүктегім келеді»
  • Терең теңіздегі сүңгуір: «Мен осы анимациялық GIF-ті жадтан жүктеп алғым келеді және мен таңдаған кодектер мен пиксельдік шығыстарды толық басқарғым келеді.»
  • Техникалық сүңгуір: «Мен жоғарыдағының барлығын және өзімнің деректер көзімді қалаймын»

Бір аймақтағы тікелей бәсекелестер:

  • FreeImage
  • DevIL
  • SDL_Image
  • WIC
  • imlib2
  • Boost.GIL
  • gdk-pixbuf

Басқа кітапханалардан айырмашылығы:

  • Күтілетін нысандары бар адам API - кескіндер, палитралар және т.б.
  • Көптеген кодектер тек RGB/RGBA пикселдерінен көбірек шығара алады.
  • Көптеген кодектер бастапқы пикселдерді RGB түрлендірусіз шығара алады.
  • Сіз кодектерді кез келген тілде жаза аласыз, сонымен қатар оларды бүкіл жобаны қайта құрастырмай-ақ қосуға/жоюға болады.
  • Түпнұсқа сурет туралы ақпаратты сақтаңыз.
  • «Зондтау» - пиксель деректерін декодтаусыз кескін туралы ақпаратты алу процесі.
  • Көлемі мен жылдамдығы.

Ақпарат көзі: opennet.ru

пікір қалдыру