SAIL billeddekodningsbibliotek tilgængeligt

Under MIT-licensen offentliggjort SAIL bibliotek for billedafkodning på tværs af platforme. SAIL er en C-baseret rebranding af codecs'ene fra den længe udgåede billedfremviser. KSquirrel, men med en abstrakt API på højt niveau og adskillige forbedringer. Målgruppe: billedfremvisere, spiludvikling, indlæsning af billeder i hukommelsen til andre formål. Biblioteket er under udvikling, men er allerede klar til brug. Binær kompatibilitet og kildekodekompatibilitet er ikke garanteret på dette udviklingsstadium.

features:

  • Et simpelt, kompakt og hurtigt bibliotek skrevet i C uden tredjepartsafhængigheder (undtagen codecs);
  • Enkel, klar og samtidig kraftfuld API til alle behov;
  • Bindinger til C++;
  • Billedformater understøttes af dynamisk indlæste codecs;
  • Læs (og skriv) billeder fra en fil, hukommelse eller endda din egen datakilde;
  • Identificer billedtype efter filtypenavn eller magisk tal;
  • Aktuelt understøttede formater: png (læser kun på Windows), JPEG (læse, skrive) PNG (læse, skrive).
    Arbejdet med at tilføje nye formater er i gang. KSquirrel-libs understøttede omkring 60 formater på den ene eller anden måde, hvor de mest populære formater var de første i rækken;
  • Læseoperationer kan altid producere pixels i RGB- og RGBA-format;
  • Nogle codecs kan udsende pixels i et endnu bredere udvalg af formater;
  • De fleste codecs kan også udsende SOURCE-pixels. Dette vil for eksempel være nyttigt for dem, der ønsker at få fuldstændige oplysninger fra CMYK- eller YCCK-billeder;
  • Læsning og skrivning af ICC-profiler;
  • Eksempler i C, Qt, SDL;
  • Understøttede platforme:
    Windows (installatør), macOS (bryg) og Linux (Debian).

Hvad SAIL ikke tilbyder:

  • Billedredigering;
  • Funktioner til konvertering af andre farverum end dem, der leveres af underliggende codecs (libjpeg osv.);
  • Farvestyringsfunktioner (anvendelse af ICC-profiler osv.)

Det enkleste eksempel på afkodning i C:

struktur sejl_kontekst *kontekst;

SAIL_TRY(sail_init(&kontekst));

struktur sejl_billede *billede;
usigneret char *billed_pixels;

SAIL_TRY(sail_read(sti,
sammenhæng,
&billede,
(void **)&billed_pixels));

/*
* Behandl de resulterende pixels her.
* Brug til dette billede->bredde, billede->højde, billede->bytes_per_linje,
* og billede->pixel_format.
*/

/* Rydning */
fri(billedpixels);
sejl_ødelæg_billede(billede);

Kort beskrivelse af API-niveauer:

  • Nybegynder: "Jeg vil bare downloade denne JPEG"
  • Avanceret: "Jeg vil indlæse denne animerede GIF fra hukommelsen"
  • Deep Sea Diver: "Jeg vil indlæse denne animerede GIF fra hukommelsen og have fuld kontrol over de valgte codecs og formatet på de returnerede pixels"
  • Teknisk dykker: "Jeg vil have alt ovenstående og min egen datakilde"

Direkte konkurrenter fra samme felt:

  • FreeImage
  • Djævel
  • SDL_billede
  • WIC
  • imlib2
  • Boost.GIL
  • gdk-pixbuf

Forskelle fra andre biblioteker:

  • En menneskelig API med forventede enheder - billeder, paletter osv.
  • De fleste codecs kan ikke kun udsende RGB/RGBA-pixels.
  • De fleste codecs kan returnere de originale pixels uden at konvertere dem til RGB.
  • Du kan skrive codecs i ethvert sprog, og også tilføje/fjerne dem uden at skulle kompilere hele projektet igen.
  • Bevar oplysninger om det originale billede.
  • Probing er processen med at indhente information om et billede uden at afkode pixeldataene.
  • Størrelse og hastighed.

Kilde: opennet.ru

Køb pålidelig hosting til websteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster