SAIL irudiak deskodetzeko liburutegia eskuragarri

MIT lizentziapean argitaratua plataforma anitzeko irudiak deskodetzeko liburutegia SAIL. SAIL C-n berridatzitako aspaldian onartzen ez den irudi-ikustaile baten kodeken birbranding bat da KStxirrilla, baina goi-mailako API abstraktu batekin eta hobekuntza ugarirekin. Helburua den publikoa: irudi-ikusleak, jokoen garapena, irudiak memorian kargatzea beste helburu batzuetarako. Liburutegia garatzen ari da, baina dagoeneko erabilgarri dago. Bitar eta iturburu-kodeen bateragarritasuna ez dago bermatzen garapen-fase honetan.

Ezaugarriak:

  • C-n idatzitako liburutegi sinple, trinko eta azkarra hirugarrenen menpekotasunik gabe (kodekak izan ezik);
  • API sinple, ulergarria eta aldi berean indartsua behar guztietarako;
  • C++-rako loturak;
  • Irudi formatuak dinamikoki kargatutako codec-ek onartzen dituzte;
  • Irakurri (eta idatzi) irudiak fitxategi, memoria edo baita zure datu-iturri batetik;
  • Irudi mota fitxategiaren luzapenaren arabera edo arabera zehaztea zenbaki magikoa;
  • Gaur egun onartzen diren formatuak: png (irakurtzea, Windows soilik), JPEG (irakurtzea, idaztea) PNG (irakurtzea, idaztea).
    Formatu berriak gehitzeko lanak egiten ari dira. KSquirrel-libs-ek 60 formatu inguru onartzen zituen modu batean edo bestean, formatu ezagunenak lerroko lehenak dira;

  • Irakurketa-eragiketek beti atera ditzakete pixelak RGB eta RGBA formatuan;
  • Kodek batzuek formatu zerrenda are handiagoan atera ditzakete pixelak;
  • Kodek gehienek SOURCE pixelak ere atera ditzakete. Hau erabilgarria da, adibidez, CMYK edo YCCK irudietatik informazio osoa lortu nahi dutenentzat;
  • ICC profilak irakurtzea eta idaztea;
  • C, Qt, SDL-n adibideak;
  • Onartutako plataformak:
    Windows (instalatzailea), macOS (brew) eta Linux (Debian).

SAILek eskaintzen ez duena:

  • Irudien edizioa;
  • Kolore-espazioaren bihurketa-funtzioak azpiko kodekek (libjpeg, etab.) eskaintzen dituztenak ez ezik;
  • Kolorea kudeatzeko funtzioak (ICC profilak erabiltzea, etab.)

C-n deskodetzeko adibiderik errazena:

struct sail_context *testuingurua;

SAIL_TRY(sail_init(&testuingurua));

struct sail_image *irudia;
sinatu gabeko char *irudi_pixelak;

SAIL_TRY(sail_read(bidea,
testuingurua,
&irudia,
(huts **)&image_pixels));

/*
* Hemen jasotako pixelak prozesatu.
* Horretarako, erabili irudia->zabalera, irudia->altuera, irudia->lerro bakoitzeko bytes,
* eta irudia->pixel_formatua.
*/

/* Garbitu */
doan (irudi_pixel);
sail_destroy_image(irudia);

API mailen deskribapen laburra:

  • Hasiberria: "JPEG hau deskargatu nahi dut"
  • Aurreratua: "Gif animatu hau memoriatik kargatu nahi dut"
  • Itsaso sakoneko urpekaria: "Gif animatu hau memoriatik kargatu nahi dut eta aukeratzen ditudan kodeken eta pixelen irteeraren kontrol osoa izan".
  • Urpekari teknikoa: "Goian dena nahi dut eta nire datu iturria"

Arlo bereko lehiakide zuzenak:

  • Irudi Librea
  • DEabrua
  • SDL_Irudia
  • WIC
  • imlib2
  • Bultzada.GIL
  • gdk-pixbuf

Beste liburutegiekiko desberdintasunak:

  • Giza APIa espero diren entitateekin - irudiak, paletak, etab.
  • Kodek gehienek RGB/RGBA pixelak baino gehiago atera ditzakete.
  • Kodek gehienek jatorrizko pixelak atera ditzakete RGB bihurtu gabe.
  • Kodekak edozein hizkuntzatan idatz ditzakezu, eta proiektu osoa berriro konpilatu gabe gehitu/kendu.
  • Jatorrizko irudiari buruzko informazioa gorde.
  • "Probing" irudi bati buruzko informazioa lortzeko prozesua da pixelen datuak deskodetu gabe.
  • Tamaina eta abiadura.

Iturria: opennet.ru

Gehitu iruzkin berria