Na voljo knjižnica za dekodiranje slik SAIL

Pod licenco MIT objavljeno večplatformska knjižnica za dekodiranje slik SAIL. SAIL je preimenovanje kodekov iz dolgo nepodprtega pregledovalnika slik, prepisanega v C KS veverica, vendar z visokonivojskim abstraktnim API-jem in številnimi izboljšavami. Ciljna publika: gledalci slik, razvoj iger, nalaganje slik v pomnilnik za druge namene. Knjižnica je v razvoju, vendar je že uporabna. Na tej stopnji razvoja ni zagotovljena združljivost binarne in izvorne kode.

Značilnosti:

  • Preprosta, kompaktna in hitra knjižnica, napisana v C brez odvisnosti od tretjih oseb (razen kodekov);
  • Preprost, razumljiv in hkrati močan API za vse potrebe;
  • Vezi za C++;
  • Formate slik podpirajo dinamično naloženi kodeki;
  • Branje (in pisanje) slik iz datoteke, pomnilnika ali celo lastnega vira podatkov;
  • Določanje vrste slike po končnici datoteke ali po čarobno število;
  • Trenutno podprti formati: png (branje, samo Windows), JPEG (branje, pisanje) PNG (branje, pisanje).
    V teku je delo za dodajanje novih formatov. KSquirrel-libs je tako ali drugače podpiral približno 60 formatov, najbolj priljubljeni formati so prvi na vrsti;

  • Operacije branja lahko vedno izpišejo slikovne pike v formatu RGB in RGBA;
  • Nekateri kodeki lahko izpišejo slikovne pike v še večjem seznamu formatov;
  • Večina kodekov lahko odda tudi SOURCE slikovne pike. To je uporabno na primer za tiste, ki želijo dobiti popolne informacije iz slik CMYK ali YCCK;
  • Branje in pisanje ICC profilov;
  • Primeri v C, Qt, SDL;
  • Podprte platforme:
    Windows (namestitveni program), macOS (brew) in Linux (Debian).

Kaj SAIL ne ponuja:

  • Urejanje slik;
  • Funkcije pretvorbe barvnega prostora, ki niso tiste, ki jih zagotavljajo osnovni kodeki (libjpeg itd.);
  • Funkcije upravljanja barv (uporaba ICC profilov itd.)

Najenostavnejši primer dekodiranja v C:

struct sail_context *kontekst;

SAIL_TRY(sail_init(&kontekst));

struct sail_image *slika;
unsigned char *piksli_slike;

SAIL_TRY(sail_read(pot,
kontekst,
&slika,
(void **)&image_pixels));

/*
* Tukaj obdelajte prejete slikovne pike.
* Če želite to narediti, uporabite image->width, image->height, image->bytes_per_line,
* in image->pixel_format.
*/

/* Pospravi */
brezplačno (piksli_slike);
sail_destroy_image(slika);

Kratek opis ravni API-ja:

  • Novinec: "Želim samo prenesti ta JPEG"
  • Napredno: "Želim naložiti ta animirani GIF iz pomnilnika"
  • Deep sea diver: "Želim naložiti ta animirani GIF iz pomnilnika in imeti popoln nadzor nad kodeki in slikovnimi pikami, ki jih izberem."
  • Tehnični potapljač: "Želim vse zgoraj in svoj vir podatkov"

Neposredni konkurenti z istega področja:

  • FreeImage
  • Hudič
  • SDL_Image
  • WIC
  • imlib2
  • Boost.GIL
  • gdk-pixbuf

Razlike od drugih knjižnic:

  • Human API s pričakovanimi entitetami – slike, palete itd.
  • Večina kodekov lahko izpiše več kot le slikovne pike RGB/RGBA.
  • Večina kodekov lahko izpiše izvirne slikovne pike brez pretvorbe v RGB.
  • Kodeke lahko pišete v katerem koli jeziku in jih tudi dodate/odstranite brez ponovnega prevajanja celotnega projekta.
  • Ohranite podatke o izvirni sliki.
  • "Sondiranje" je postopek pridobivanja informacij o sliki brez dekodiranja slikovnih podatkov.
  • Velikost in hitrost.

Vir: opennet.ru

Dodaj komentar