SAIL-i kujutiste dekodeerimise teegis on avaldatud mitmeid olulisi uuendusi, mis pakuvad kodekite C-ümberkirjutamist juba ammu mittetoiminud KSquirreli pildivaaturist, kuid koos kõrgetasemelise abstraktse API-ga ja paljude täiustustega. Raamatukogu on kasutamiseks valmis, kuid seda täiendatakse jätkuvalt. Binaarne ja API ühilduvus pole veel garanteeritud. Demonstratsioon.
SAIL-i omadused
- Kiire ja lihtne kasutada raamatukogu;
- Kirjutatud C11-s koos sidemetega C++17-le;
- Pildivormingute tugi on realiseeritud dünaamiliselt laaditud koodekitega, mida saab eemaldada ja lisada kliendi poolest sõltumatult;
- Lugemine failist, mälust, oma allikatest;
- Mitmeleheküljeliste ja animeeritud piltide tugi;
- Populaarsete vormingute tugi toimub endiselt vastavate teekide libjpeg, libpng jne abil.
- Platvormidevaheline: Linux, Windows, macOS;
- "Probing" - pildi kohta teabe hankimine ilma piksleid dekodeerimata;
- Inimüksuste nimed (FIMULTIBITMAP puudub);
- ICC profiilide lugemine ja kirjutamine;
- Saadab RGBA või BGRA piksleid;
- Tagastab algsed pikslid (näiteks CMYK), kui koodek seda toetab;
Pärast viimast avaldamist tehtud muudatuste loend:
- API-d on oluliselt täiustatud ja lihtsustatud. Oli: struct sail_context *kontekst; SAIL_TRY(sail_init(&kontekst)); struct sail_image *pilt; unsigned char *image_pixels; SAIL_TRY(sail_read(tee, kontekst, &pilt, (void **)&kujutise_pikslid)); ... vaba(pildi_pikslid); sail_destroy_image(pilt);
Nüüd: struct sail_image *image; SAIL_TRY(sail_read_file(tee, &pilt); ... purje_hävitamise_pilt(pilt);
- Lisatud BMP, GIF, TIFF formaadid;
- Saadavus VCPKG-s kõigil platvormidel, välja arvatud UWP;
- Avaldatud tulemuslikkuse võrdlustestid;
- C++ sidumine on viidud C++17;
- Mälu eraldamise funktsioonid on koondatud ühte kohta, et neid saaks hõlpsasti enda omadega asendada, kuid hetkel saab seda teha vaid ümberkompileerimise teel;
- Kasutajad saavad nüüd kasutada SAIL-i ühendamiseks kasutada CMake find_package().
- Lisatud staatilise kompileerimise võimalus (SAIL_STATIC=ON);
- Lisatud võimalus kompileerida kõik koodekid üheks ühiseks teegiks (SAIL_COMBINE_CODECS=ON);
- Töö µnitipõhiste testide lisamisega on alanud;
Soovitatav paigaldusviis
- Linux - vcpkg, saadaval on ka Debiani reeglid
- Windows - vcpkg
- macOS – pruulima
Allikas: opennet.ru