SAIL-i pildide dekodeerimise teek on saadaval

MIT litsentsi all on avaldatud ristplatvormiline SAIL-i pildide dekodeerimise teek. SAIL on ümber kirjutatud C keeles ebapiisavalt toetatud pilditarkvara koodekidest KSquirrel, 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 maagilise numbri;
  • Praegu toetatud formaadid: APNG (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

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster