K dispozici knihovna pro dekódování obrázků SAIL

Pod licencí MIT publikováno multiplatformní knihovna pro dekódování obrázků SAIL. SAIL je rebranding kodeků z dlouho nepodporovaného prohlížeče obrázků přepsaného v C KSveverka, ale s abstraktním API na vysoké úrovni a četnými vylepšeními. Cílové publikum: prohlížeče obrázků, vývoj her, načítání obrázků do paměti pro jiné účely. Knihovna je ve vývoji, ale je již použitelná. V této fázi vývoje není zaručena kompatibilita binárního a zdrojového kódu.

Vlastnosti:

  • Jednoduchá, kompaktní a rychlá knihovna napsaná v C bez závislostí třetích stran (kromě kodeků);
  • Jednoduché, srozumitelné a zároveň výkonné API pro všechny potřeby;
  • Vazby pro C++;
  • Obrazové formáty jsou podporovány dynamicky načítanými kodeky;
  • Číst (a zapisovat) obrázky ze souboru, paměti nebo dokonce z vlastního zdroje dat;
  • Určení typu obrázku podle přípony souboru nebo podle magické číslo;
  • Aktuálně podporované formáty: png (čtení, pouze Windows), JPEG (čtení, zápis) PNG (čtení, zápis).
    Na přidání nových formátů se pracuje. KSquirrel-libs podporovaly asi 60 formátů tak či onak, nejoblíbenější formáty jsou první na řadě;

  • Operace čtení mohou vždy vydávat pixely ve formátu RGB a RGBA;
  • Některé kodeky mohou vydávat obrazové body v ještě větším seznamu formátů;
  • Většina kodeků může mít také výstup SOURCE pixelů. To je užitečné například pro ty, kteří chtějí získat úplné informace z obrázků CMYK nebo YCCK;
  • Čtení a zápis ICC profilů;
  • Příklady v C, Qt, SDL;
  • Podporované platformy:
    Windows (instalační program), macOS (brew) a Linux (Debian).

Co SAIL neposkytuje:

  • Úprava obrázků;
  • Funkce převodu barevného prostoru jiné než ty, které poskytují základní kodeky (libjpeg atd.);
  • Funkce správy barev (použití ICC profilů atd.)

Nejjednodušší příklad dekódování v C:

struct sail_context *kontext;

SAIL_TRY(sail_init(&kontext));

struct sail_image *obrazek;
unsigned char *image_pixels;

SAIL_TRY(čtení_plachet(cesta,
kontext,
&obraz,
(neplatné **)&image_pixels));

/*
* Zde zpracujte přijaté pixely.
* Chcete-li to provést, použijte obrázek->šířka, obrázek->výška, obrázek->bytes_per_line,
* a image->pixel_format.
*/

/* Vyčištění */
free(obrazkove_pixely);
sail_destroy_image(image);

Stručný popis úrovní API:

  • Nováček: "Chci si jen stáhnout tento JPEG"
  • Pokročilé: "Chci načíst tento animovaný GIF z paměti"
  • Deep sea diver: „Chci načíst tento animovaný GIF z paměti a mít plnou kontrolu nad kodeky a výstupem pixelů, které si vyberu.“
  • Technical Diver: „Chci vše výše uvedené a svůj vlastní zdroj dat“

Přímí konkurenti ze stejné oblasti:

  • FreeImage
  • Ďábel
  • SDL_Image
  • WIC
  • imlib2
  • Boost.GIL
  • gdk-pixbuf

Rozdíly od jiných knihoven:

  • Human API s očekávanými entitami - obrázky, palety atd.
  • Většina kodeků umí na výstupu více než jen RGB/RGBA pixely.
  • Většina kodeků dokáže vytisknout původní pixely bez konverze do RGB.
  • Kodeky můžete psát v libovolném jazyce a také je přidávat/odebírat bez překompilování celého projektu.
  • Zachovat informace o původním obrázku.
  • „Probing“ je proces získávání informací o obrázku bez dekódování dat pixelů.
  • Velikost a rychlost.

Zdroj: opennet.ru

Přidat komentář