SAIL-beelddecoderingsbibliotheek beschikbaar

Onder MIT-licentie gepubliceerd platformonafhankelijke beelddecoderingsbibliotheek SAIL. SAIL is een rebranding van codecs van een lang niet ondersteunde beeldviewer, herschreven in C KSekhoorn, maar met een abstracte API op hoog niveau en talloze verbeteringen. Doelgroep: beeldviewers, game-ontwikkeling, afbeeldingen in het geheugen laden voor andere doeleinden. De bibliotheek is nog in ontwikkeling, maar is al bruikbaar. Compatibiliteit met binaire codes en broncodes is in dit ontwikkelingsstadium niet gegarandeerd.

kenmerken:

  • Een eenvoudige, compacte en snelle bibliotheek geschreven in C zonder afhankelijkheden van derden (behalve codecs);
  • Eenvoudige, begrijpelijke en tegelijkertijd krachtige API voor alle behoeften;
  • Bindingen voor C++;
  • Beeldformaten worden ondersteund door dynamisch geladen codecs;
  • Afbeeldingen lezen (en schrijven) vanuit een bestand, geheugen of zelfs uw eigen gegevensbron;
  • Het afbeeldingstype bepalen op bestandsextensie of op magisch nummer;
  • Momenteel ondersteunde formaten: png (lezen, alleen Windows), JPEG (lezen, schrijven) PNG (lezen, schrijven).
    Er wordt gewerkt aan het toevoegen van nieuwe formaten. KSquirrel-libs ondersteunde op de een of andere manier ongeveer 60 formaten, de meest populaire formaten staan ​​voorop;

  • Leesbewerkingen kunnen altijd pixels uitvoeren in RGB- en RGBA-indeling;
  • Sommige codecs kunnen pixels in een nog grotere lijst met formaten uitvoeren;
  • De meeste codecs kunnen ook SOURCE-pixels uitvoeren. Dit is bijvoorbeeld handig voor degenen die volledige informatie uit CMYK- of YCCK-afbeeldingen willen halen;
  • ICC-profielen lezen en schrijven;
  • Voorbeelden in C, Qt, SDL;
  • Ondersteunde platformen:
    Windows (installatieprogramma), macOS (brew) en Linux (Debian).

Wat SAIL niet biedt:

  • Foto bewerken;
  • Kleurruimteconversiefuncties anders dan die geleverd door onderliggende codecs (libjpeg, enz.);
  • Kleurbeheerfuncties (gebruik van ICC-profielen, enz.)

Het eenvoudigste voorbeeld van decodering in C:

struct zeil_context *context;

SAIL_TRY(zeil_init(&context));

struct zeil_image *image;
niet-ondertekende char *image_pixels;

SAIL_TRY(sail_read(pad,
context
&afbeelding,
(nietig **)&image_pixels));

/*
* Verwerk hier de ontvangen pixels.
* Gebruik hiervoor afbeelding->breedte, afbeelding->hoogte, afbeelding->bytes_per_lijn,
* en afbeelding->pixel_format.
*/

/* Opruimen */
gratis(afbeelding_pixels);
sail_destroy_image(afbeelding);

Korte beschrijving van API-niveaus:

  • Newbie: "Ik wil deze JPEG gewoon downloaden"
  • Geavanceerd: "Ik wil deze geanimeerde GIF uit het geheugen laden"
  • Diepzeeduiker: "Ik wil deze geanimeerde GIF uit het geheugen laden en volledige controle hebben over de codecs en pixeluitvoer die ik kies."
  • Technical Diver: “Ik wil alles hierboven, en mijn eigen databron”

Directe concurrenten uit hetzelfde gebied:

  • Gratis afbeelding
  • Duivel
  • SDL_Afbeelding
  • WIC
  • imlib2
  • Boost.GIL
  • gdk-pixbuf

Verschillen met andere bibliotheken:

  • Menselijke API met verwachte entiteiten - afbeeldingen, paletten, enz.
  • De meeste codecs kunnen meer uitvoeren dan alleen RGB/RGBA-pixels.
  • De meeste codecs kunnen originele pixels uitvoeren zonder conversie naar RGB.
  • U kunt codecs in elke taal schrijven en deze ook toevoegen/verwijderen zonder het hele project opnieuw te compileren.
  • Bewaar informatie over de originele afbeelding.
  • “Probing” is het proces waarbij informatie over een afbeelding wordt verkregen zonder de pixelgegevens te decoderen.
  • Grootte en snelheid.

Bron: opennet.ru

Voeg een reactie