SAIL-i kujutiste dekodeerimise raamatukogu saadaval

MIT litsentsi all avaldatud platvormideülene piltide dekodeerimise teek SAIL. SAIL on pikka aega toetamata pildivaaturi koodekite kaubamärgi muutmine, mis on ümber kirjutatud C-vormingus KS orav, kuid kõrgetasemelise abstraktse API ja arvukate täiustustega. Sihtrühm: pildivaatajad, mänguarendus, piltide mällu laadimine muuks otstarbeks. Raamatukogu on arendamisel, kuid juba kasutatav. Binaar- ja lähtekoodi ühilduvus pole selles arendusetapis garanteeritud.

Omadused:

  • Lihtne, kompaktne ja kiire C-keeles kirjutatud teek ilma kolmandate osapoolte sõltuvusteta (välja arvatud koodekid);
  • Lihtne, arusaadav ja samal ajal võimas API kõikidele vajadustele;
  • Seosed C++ jaoks;
  • Pildivorminguid toetavad dünaamiliselt laaditud koodekid;
  • Lugege (ja kirjutage) pilte failist, mälust või isegi oma andmeallikast;
  • Pildi tüübi määramine faililaiendi või järgi maagiline number;
  • Praegu toetatud vormingud: png (lugemine, ainult Windows), JPEG (lugemine, kirjutamine) PNG (lugemine, kirjutamine).
    Töö uute vormingute lisamisega käib. KSquirrel-libs toetas ühel või teisel viisil umbes 60 vormingut, kõige populaarsemad vormingud on järjekorras esimesed;

  • Lugemistoimingud võivad alati piksleid väljastada RGB- ja RGBA-vormingus;
  • Mõned koodekid suudavad piksleid väljastada veelgi suuremas vormingute loendis;
  • Enamik koodekeid suudab väljastada ka SOURCE piksleid. See on kasulik näiteks neile, kes soovivad saada täielikku teavet CMYK- või YCCK-piltidest;
  • ICC profiilide lugemine ja kirjutamine;
  • Näited C, Qt, SDL;
  • Toetatud platvormid:
    Windows (installer), macOS (pruulimine) ja Linux (Debian).

Mida SAIL ei paku:

  • Pilditöötlus;
  • muud värviruumi teisendusfunktsioonid kui need, mida pakuvad aluseks olevad koodekid (libjpeg jne);
  • Värvihaldusfunktsioonid (ICC-profiilide kasutamine jne)

Lihtsaim näide C-dekodeerimisest:

struct sail_context *kontekst;

SAIL_TRY(sail_init(&kontekst));

struct sail_image *pilt;
unsigned char *image_pixels;

SAIL_TRY(sail_read(tee,
Sisu,
&pilt,
(kehtetu **)&pildi_pikslid));

/*
* Siin töödeldakse vastuvõetud piksleid.
* Selleks kasutage image->width, image->height, image->bytes_per_re,
* ja image->pixel_format.
*/

/* Korista ära */
vaba(pildi_pikslid);
sail_destroy_image(pilt);

API tasemete lühikirjeldus:

  • Algaja: "Ma tahan lihtsalt selle JPEG-i alla laadida"
  • Täpsem: "Ma tahan laadida selle animeeritud GIF-i mälust"
  • Süvamere sukelduja: "Ma tahan laadida selle animeeritud GIF-i mälust ja omada täielikku kontrolli oma valitud koodekite ja pikslite väljundi üle."
  • Tehniline sukelduja: "Ma tahan kõike ülaltoodud ja oma andmeallikat"

Otsesed konkurendid samast piirkonnast:

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

Erinevused teistest raamatukogudest:

  • Inimese API eeldatavate üksustega – pildid, paletid jne.
  • Enamik koodekeid suudab väljastada rohkem kui ainult RGB/RGBA piksleid.
  • Enamik koodekeid suudavad algseid piksleid väljastada ilma RGB-vormingusse teisendamata.
  • Saate kirjutada koodekeid mis tahes keeles ning neid lisada/eemaldada ilma kogu projekti uuesti kompileerimata.
  • Säilitage teave algse pildi kohta.
  • „Probing” on kujutise kohta teabe hankimise protsess ilma piksliandmeid dekodeerimata.
  • Suurus ja kiirus.

Allikas: opennet.ru

Lisa kommentaar