K dispozícii je knižnica na dekódovanie obrázkov SAIL

Pod licenciou MIT publikovaný multiplatformová knižnica na dekódovanie obrázkov SAIL. SAIL je rebranding kodekov z dlho nepodporovaného prehliadača obrázkov prepísaného do C KSeverička, ale s abstraktným API na vysokej úrovni a mnohými vylepšeniami. Cieľová skupina: prehliadače obrázkov, vývoj hier, načítanie obrázkov do pamäte na iné účely. Knižnica je vo vývoji, ale už je použiteľná. V tejto fáze vývoja nie je zaručená kompatibilita binárneho a zdrojového kódu.

vlastnosti:

  • Jednoduchá, kompaktná a rýchla knižnica napísaná v jazyku C bez závislostí tretích strán (okrem kodekov);
  • Jednoduché, zrozumiteľné a zároveň výkonné API pre všetky potreby;
  • Väzby pre C++;
  • Obrazové formáty sú podporované dynamicky načítanými kodekami;
  • Čítať (a zapisovať) obrázky zo súboru, pamäte alebo dokonca z vlastného zdroja údajov;
  • Určenie typu obrázka podľa prípony súboru alebo podľa magické číslo;
  • Aktuálne podporované formáty: png (čítanie, iba Windows), JPEG (čítanie, zápis) PNG (čítanie, zápis).
    Pracuje sa na pridávaní nových formátov. KSquirrel-libs podporovali asi 60 formátov tak či onak, najpopulárnejšie formáty sú prvé v rade;

  • Operácie čítania môžu vždy získať výstup pixelov vo formáte RGB a RGBA;
  • Niektoré kodeky môžu vydávať pixely v ešte väčšom zozname formátov;
  • Väčšina kodekov môže mať na výstupe aj SOURCE pixely. To je užitočné napríklad pre tých, ktorí chcú získať úplné informácie z obrázkov CMYK alebo YCCK;
  • Čítanie a zápis ICC profilov;
  • Príklady v C, Qt, SDL;
  • Podporované platformy:
    Windows (inštalátor), macOS (var) a Linux (Debian).

Čo SAIL neposkytuje:

  • Úprava obrázkov;
  • Funkcie konverzie farebného priestoru iné ako tie, ktoré poskytujú základné kodeky (libjpeg atď.);
  • Funkcie správy farieb (použitie ICC profilov atď.)

Najjednoduchší príklad dekódovania v C:

struct sail_context *kontext;

SAIL_TRY(sail_init(&kontext));

struct sail_image *obrazok;
unsigned char *image_pixels;

SAIL_TRY(prečítanie_plachiet(cesta,
kontext,
&obrázok,
(neplatné **)&image_pixels));

/*
* Tu spracujte prijaté pixely.
* Ak to chcete urobiť, použite obrázok->šírka, obrázok->výška, obrázok->bajty_na_riadok,
* a image->pixel_format.
*/

/* Vyčistiť */
free(obrazkove_pixely);
sail_destroy_image(obrazok);

Stručný popis úrovní API:

  • Nováčik: „Chcem si stiahnuť tento JPEG“
  • Pokročilé: „Chcem načítať tento animovaný GIF z pamäte“
  • Hlboký potápač: „Chcem načítať tento animovaný GIF z pamäte a mať plnú kontrolu nad kodekmi a výstupom pixelov, ktoré si vyberiem.“
  • Technický potápač: „Chcem všetko vyššie a svoj vlastný zdroj údajov“

Priami konkurenti z rovnakej oblasti:

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

Rozdiely od iných knižníc:

  • Human API s očakávanými entitami – obrázky, palety atď.
  • Väčšina kodekov môže mať na výstupe viac než len RGB/RGBA pixely.
  • Väčšina kodekov dokáže reprodukovať pôvodné pixely bez konverzie na RGB.
  • Môžete písať kodeky v akomkoľvek jazyku a tiež ich pridávať/odstraňovať bez prekompilovania celého projektu.
  • Zachovať informácie o pôvodnom obrázku.
  • „Snímanie“ je proces získavania informácií o obrázku bez dekódovania údajov o pixeloch.
  • Veľkosť a rýchlosť.

Zdroj: opennet.ru

Pridať komentár