Dostupna biblioteka za dekodiranje slika SAIL

Pod licencom MIT-a Objavljeno biblioteka za dekodiranje slike na različitim platformama SAIL. SAIL je rebranding kodeka iz dugo nepodržanog preglednika slika prepisanog u C KS vjeverica, ali s apstraktnim API-jem visoke razine i brojnim poboljšanjima. Ciljana publika: gledatelji slika, razvoj igrica, učitavanje slika u memoriju za druge svrhe. Knjižnica je u razvoju, ali je već upotrebljiva. Kompatibilnost binarnog i izvornog koda nije zajamčena u ovoj fazi razvoja.

Značajke:

  • Jednostavna, kompaktna i brza biblioteka napisana u C-u bez ovisnosti o trećim stranama (osim kodeka);
  • Jednostavan, razumljiv, au isto vrijeme moćan API za sve potrebe;
  • Vezovi za C++;
  • Formati slika podržani su dinamički učitanim kodecima;
  • Čitati (i pisati) slike iz datoteke, memorije ili čak vlastitog izvora podataka;
  • Određivanje vrste slike prema ekstenziji datoteke ili prema čarobni broj;
  • Trenutno podržani formati: png (čitanje, samo Windows), JPEG (čitanje, pisanje) PNG (čitanje, pisanje).
    U tijeku 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 mogu uvijek ispisati piksele u RGB i RGBA formatu;
  • Neki kodeci mogu ispisati piksele u još većem popisu formata;
  • Većina kodeka također može ispisati SOURCE piksele. Ovo je korisno, na primjer, za one koji žele dobiti potpune 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).

Što SAIL ne pruža:

  • Uređivanje slika;
  • Funkcije pretvorbe prostora boja osim onih koje pružaju temeljni kodeci (libjpeg, itd.);
  • Funkcije upravljanja bojama (upotreba ICC profila, itd.)

Najjednostavniji primjer dekodiranja u C:

struct sail_context *kontekst;

SAIL_TRY(sail_init(&context));

struct sail_image *slika;
unsigned char *pikseli_slike;

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

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

/* Počistiti */
besplatno(pikseli_slike);
jedriti_uništiti_sliku(slika);

Kratak opis API razina:

  • Novajlija: "Samo želim preuzeti ovaj JPEG"
  • Napredno: "Želim učitati ovaj animirani GIF iz memorije"
  • Ronilac u morskim dubinama: "Želim učitati ovaj animirani GIF iz memorije i imati potpunu kontrolu nad kodecima i izlazom piksela koje odaberem."
  • Tehnički ronilac: "Želim sve gore navedeno i vlastiti izvor podataka"

Izravni konkurenti iz istog područja:

  • FreeImage
  • Vrag
  • SDL_Slika
  • WIC
  • imlib2
  • Pojačaj.GIL
  • gdk-pixbuf

Razlike u odnosu na druge knjižnice:

  • Human API s očekivanim entitetima - slikama, paletama itd.
  • Većina kodeka može ispisati više od RGB/RGBA piksela.
  • Većina kodeka može ispisati originalne piksele bez konverzije u RGB.
  • Možete pisati kodeke na bilo kojem jeziku, te ih također dodavati/uklanjati bez ponovnog kompajliranja cijelog projekta.
  • Sačuvajte informacije o izvornoj slici.
  • "Sondiranje" je proces dobivanja informacija o slici bez dekodiranja podataka o pikselima.
  • Veličina i brzina.

Izvor: opennet.ru

Dodajte komentar