SAIL biblioteka za dekodiranje slika dostupna

Pod MIT licencom objavljeno višeplatformska biblioteka za dekodiranje slika SAIL. SAIL je rebranding kodeka iz dugo nepodržanog preglednika slika prepisanog u C KSquirrel, ali sa apstraktnim API-jem visokog nivoa i brojnim poboljšanjima. Ciljna publika: pregledači slika, razvoj igara, učitavanje slika u memoriju za druge svrhe. Biblioteka je u razvoju, ali je već upotrebljiva. Kompatibilnost binarnog i izvornog koda nije zagarantovana u ovoj fazi razvoja.

Karakteristike:

  • Jednostavna, kompaktna i brza biblioteka napisana u C-u bez zavisnosti od trećih strana (osim kodeka);
  • Jednostavan, razumljiv i istovremeno moćan API za sve potrebe;
  • Vezi za C++;
  • Formati slika su podržani od strane dinamički učitanih kodeka;
  • Čitanje (i pisanje) slika iz datoteke, memorije ili čak iz vlastitog izvora podataka;
  • Određivanje tipa slike prema ekstenziji datoteke ili po magični broj;
  • Trenutno podržani formati: png (čitanje, samo Windows), JPEG (čitanje, pisanje) PNG (čitanje, pisanje).
    U toku je rad na dodavanju novih formata. KSquirrel-libs podržava oko 60 formata na ovaj ili onaj način, najpopularniji formati su prvi na redu;

  • Operacije čitanja uvijek mogu dati piksele u RGB i RGBA formatu;
  • Neki kodeci mogu da izlaze piksele u još većoj listi formata;
  • Većina kodeka također može emitovati SOURCE piksele. Ovo je korisno, na primjer, za one koji žele da dobiju pune informacije iz CMYK ili YCCK slika;
  • Čitanje i pisanje ICC profila;
  • Primjeri u C, Qt, SDL;
  • Podržane platforme:
    Windows (instalater), macOS (brew) i Linux (Debian).

Šta SAIL ne pruža:

  • Uređivanje slika;
  • Funkcije konverzije prostora boja koje nisu one koje pružaju osnovni kodeci (libjpeg, itd.);
  • Funkcije upravljanja bojom (upotreba ICC profila, itd.)

Najjednostavniji primjer dekodiranja u C:

struct sail_context *kontekst;

SAIL_TRY(sail_init(&kontekst));

struct sail_image *image;
unsigned char *image_pixels;

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

/*
* Ovdje obradite primljene piksele.
* Da biste to učinili, koristite image->width, image->height, image->bytes_per_line,
* i image->pixel_format.
*/

/* Čišćenje */
besplatno (pikseli_slika);
sail_destroy_image(slika);

Kratak opis nivoa API-ja:

  • Novac: "Samo želim da preuzmem ovaj JPEG"
  • Napredno: "Želim učitati ovaj animirani GIF iz memorije"
  • Deep sea diver: “Želim učitati ovaj animirani GIF iz memorije i imati potpunu kontrolu nad kodecima i izlazom piksela koje odaberem.”
  • Technical Diver: "Želim sve gore i svoj izvor podataka"

Direktni konkurenti iz istog područja:

  • FreeImage
  • DevIL
  • SDL_Image
  • WIC
  • imlib2
  • Boost.GIL
  • gdk-pixbuf

Razlike od drugih biblioteka:

  • Human API sa očekivanim entitetima - slike, palete, itd.
  • Većina kodeka može emitovati više od samo RGB/RGBA piksela.
  • Većina kodeka može emitovati originalne piksele bez konverzije u RGB.
  • Možete pisati kodeke na bilo kojem jeziku, a također ih dodati/ukloniti bez ponovnog kompajliranja cijelog projekta.
  • Sačuvajte informacije o originalnoj slici.
  • “Probiranje” je proces dobivanja informacija o slici bez dekodiranja podataka piksela.
  • Veličina i brzina.

izvor: opennet.ru

Dodajte komentar