MIT litsentsi all ristplatvormiline SAIL-i pildide dekodeerimise teek. SAIL on ümber kirjutatud C keeles ebapiisavalt toetatud pilditarkvara koodekidest , kuid sisaldab kõrgema taseme abstraktset API-d ja mitmeid täiustusi. Sihtgrupp: pildivaatajad, mängude arendamine, piltide mälusse laadimine muudel eesmärkidel. Teek on arendamisfaasis, kuid juba kasutamiseks sobiv. Praegu ei garanteerita binaarset ühilduvust ega lähtekoodi ühilduvust.
Võimalused:
- Lihtne, kompaktne ja kiire teek, kirjutatud C-s ilma väliste sõltuvusteta (välja arvatud koodekid);
- Lihtne, arusaadav ja samas võimas API kõigi vajaduste jaoks;
- C++ sidemed;
- Pildiformaadid toetatakse dünaamiliselt laaditavate koodekitega;
- Piltide lugemine (ja kirjutamine) failist, mälust või isegi kohandatud andmete allikast;
- Pildi tüübi määramine faililaiendi või ;
- Praegu toetatud formaadid: (lugemine, ainult Windowsis), JPEG (lugemine, kirjutamine) PNG (lugemine, kirjutamine).
Uute formaatide lisamine on pooleli. KSquirrel-libs on toetanud umbes 60 formaati, kõige populaarsemad formaadid on prioriteetsed; - Lugemisoperatsioonid saavad alati tagastada pikslid RGB ja RGBA formaadis;
- Mõned koodekid võivad tagastada pikslid veelgi suuremas vormindusloendis;
- Enamik koodekeid suudab tagastada ka algse (SOURCE) piksli. See on kasulik näiteks neile, kes soovivad täielikku teavet CMYK- või YCCK-piltide kohta;
- ICC profiilide lugemine ja kirjutamine;
- Näidised C, Qt, SDL kohta;
- Toetatud platvormid:
Windows (installer), macOS (brew) ja Linux (Debian).
Mida SAIL ei paku:
- Piltide редактирование;
- Värviruumi teisendamise funktsioonid peale selle, mida pakuvad madalamad koodekid (libjpeg jne);
- Värvihalduse funktsioonid (ICC profiilide rakendamine jne)
Lihtsaim dekodeerimise näide C-s:
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));
/*
* Siin töötlege saadud pikslid.
* Selleks kasutage image->width, image->height, image->bytes_per_line,
* ja image->pixel_format.
*/
/* Очистка */
free(image_pixels);
sail_destroy_image(image);
API tasemete lühikirjeldus:
- Algaja: „Ma tahan lihtsalt laadida üles selle JPEG-i“
- Kogenud: „Ma tahan laadida üles selle animatsiooni GIF-i mälust“
- Sügavvetes sukelduja: „Ma tahan laadida üles selle animatsiooni GIF-i mälust ning omada täielikku kontrolli valitud koodekite ja välja antud pikslite formati üle“
- Tehniline sukelduja: „Ma tahan kõike eelnevat ja enda andmeallikat“
Otsesed konkurendid samas valdkonnas:
- FreeImage
- DevIL
- SDL_Image
- WIC
- imlib2
- Boost.GIL
- gdk-pixbuf
Erinevused teiste raamatukogudega:
- Inimlik API oodatud üksustega — pildid, paletid jne.
- Enamik koodekeid suudab anda mitte ainult RGB/RGBA piksleid.
- Enamik koodekeid suudab anda algseid pikslit ilma RGB-ks teisendamiseta.
- Koodekeid saab kirjutada igas programmeerimiskeeles ning neid saab lisada/eemaldada ilma kogu projekti uuesti kompileerimata.
- Algse pildi teabe säilitamine.
- „Uurimine“ (probing) — info hankimine pildi kohta ilma pikslite andmeid dekodeerimata.
- Suurus ja kiirus.
Allikas: opennet.ru
