SAIL beeld dekodering biblioteek beskikbaar

Onder MIT lisensie gepubliseer kruis-platform beeld dekodering biblioteek SAIL. SAIL is 'n hernaam van codecs vanaf 'n lank nie-ondersteunde beeldkyker wat in C herskryf is KSehoring, maar met 'n hoëvlak abstrakte API en talle verbeterings. Teikengehoor: beeldkykers, speletjie-ontwikkeling, laai van beelde in die geheue vir ander doeleindes. Die biblioteek is onder ontwikkeling, maar is reeds bruikbaar. Binêre en bronkode-versoenbaarheid word nie op hierdie stadium van ontwikkeling gewaarborg nie.

kenmerke:

  • 'n Eenvoudige, kompakte en vinnige biblioteek geskryf in C sonder derdeparty-afhanklikhede (behalwe codecs);
  • Eenvoudige, verstaanbare en terselfdertyd kragtige API vir alle behoeftes;
  • Bindings vir C++;
  • Beeldformate word ondersteun deur dinamies gelaaide codecs;
  • Lees (en skryf) beelde van 'n lêer, geheue, of selfs jou eie databron;
  • Bepaling van die beeldtipe deur lêeruitbreiding, of deur magiese nommer;
  • Tans ondersteunde formate: png (lees, slegs Windows), JPEG (lees, skryf) PNG (lees, skryf).
    Werk is aan die gang om nuwe formate by te voeg. KSquirrel-libs het ongeveer 60 formate op een of ander manier ondersteun, die gewildste formate is eerste in die ry;

  • Leesbewerkings kan altyd pixels in RGB- en RGBA-formaat uitvoer;
  • Sommige codecs kan pieksels in 'n selfs groter lys van formate uitvoer;
  • Die meeste codecs kan ook SOURCE pixels uitvoer. Dit is byvoorbeeld nuttig vir diegene wat volledige inligting van CMYK- of YCCK-beelde wil kry;
  • Lees en skryf van ICC-profiele;
  • Voorbeelde in C, Qt, SDL;
  • Ondersteunde platforms:
    Windows (installeerder), macOS (brew) en Linux (Debian).

Wat SAIL nie verskaf nie:

  • Beeld redigering;
  • Kleurruimte-omskakelingsfunksies anders as dié wat deur onderliggende kodeks (libjpeg, ens.) verskaf word;
  • Kleurbestuursfunksies (gebruik van ICC-profiele, ens.)

Die eenvoudigste voorbeeld van dekodering in C:

struct sail_context *konteks;

SAIL_TRY(sail_init(&konteks));

struct sail_image *image;
ongetekende char *image_pixels;

SAIL_TRY(seil_lees(pad,
konteks,
&beeld,
(ongeldig **)&image_pixels));

/*
* Hier verwerk die ontvangde pixels.
* Om dit te doen, gebruik beeld->wydte, beeld->hoogte, beeld->grepe_per_lyn,
* en beeld->pixel_format.
*/

/* Maak skoon */
gratis (beeld_pixels);
sail_destroy_image(beeld);

Kort beskrywing van API-vlakke:

  • Nuweling: "Ek wil net hierdie JPEG aflaai"
  • Gevorderd: "Ek wil hierdie geanimeerde GIF uit die geheue laai"
  • Diepsee-duiker: "Ek wil hierdie geanimeerde GIF uit die geheue laai en volle beheer hê oor die kodeks en pixel-uitvoer wat ek kies."
  • Tegniese duiker: "Ek wil alles hierbo hê, en my eie databron"

Direkte mededingers uit dieselfde gebied:

  • Gratis Beeld
  • Duiwel
  • SDL_Beeld
  • WIC
  • imlib2
  • Boost.GIL
  • gdk-pixbuf

Verskille van ander biblioteke:

  • Menslike API met verwagte entiteite - beelde, palette, ens.
  • Die meeste codecs kan meer as net RGB/RGBA-pixels uitvoer.
  • Die meeste codecs kan oorspronklike pixels uitvoer sonder omskakeling na RGB.
  • Jy kan codecs in enige taal skryf, en dit ook byvoeg/verwyder sonder om die hele projek te hersaamstel.
  • Bewaar inligting oor die oorspronklike prent.
  • “Sondersoek” is die proses om inligting oor 'n beeld te verkry sonder om die pixeldata te dekodeer.
  • Grootte en spoed.

Bron: opennet.ru

Voeg 'n opmerking