Pieejama SAIL attēlu dekodēšanas bibliotēka

Saskaņā ar MIT licenci publicēts starpplatformu attēlu dekodēšanas bibliotēka SAIL. SAIL ir sen neatbalstīta attēlu skatītāja kodeku zīmola maiņa, kas pārrakstīta C valodā KVāvere, bet ar augsta līmeņa abstraktu API un daudziem uzlabojumiem. Mērķauditorija: attēlu skatītāji, spēļu izstrāde, attēlu ielāde atmiņā citiem mērķiem. Bibliotēka ir izstrādes stadijā, bet jau ir lietojama. Binārā un pirmkoda saderība šajā izstrādes posmā netiek garantēta.

Funkcijas:

  • Vienkārša, kompakta un ātra bibliotēka, kas rakstīta C valodā bez trešās puses atkarībām (izņemot kodekus);
  • Vienkārša, saprotama un tajā pašā laikā jaudīga API visām vajadzībām;
  • Saistības priekš C++;
  • Attēlu formātus atbalsta dinamiski ielādēti kodeki;
  • Lasīt (un rakstīt) attēlus no faila, atmiņas vai pat sava datu avota;
  • Attēla veida noteikšana pēc faila paplašinājuma vai pēc maģiskais skaitlis;
  • Pašlaik atbalstītie formāti: png (lasīt, tikai Windows), JPEG (lasīt, rakstīt) PNG (lasīt, rakstīt).
    Notiek darbs pie jaunu formātu pievienošanas. KSquirrel-libs vienā vai otrā veidā atbalstīja aptuveni 60 formātus, populārākie formāti ir pirmie;

  • Lasīšanas darbības vienmēr var izvadīt pikseļus RGB un RGBA formātā;
  • Daži kodeki var izvadīt pikseļus vēl lielākā formātu sarakstā;
  • Lielākā daļa kodeku var izvadīt arī SOURCE pikseļus. Tas ir noderīgi, piemēram, tiem, kuri vēlas iegūt pilnu informāciju no CMYK vai YCCK attēliem;
  • Lasīt un rakstīt ICC profilus;
  • Piemēri C, Qt, SDL;
  • Atbalstītās platformas:
    Windows (instalēšanas programma), macOS (brew) un Linux (Debian).

Ko SAIL nenodrošina:

  • Attēlu rediģēšana;
  • Krāsu telpas pārveidošanas funkcijas, izņemot tās, kuras nodrošina pamatā esošie kodeki (libjpeg utt.);
  • Krāsu pārvaldības funkcijas (ICC profilu izmantošana utt.)

Vienkāršākais C dekodēšanas piemērs:

struct sail_context *konteksts;

SAIL_TRY(sail_init(&konteksts));

struct sail_image *attēls;
unsigned char *image_pixels;

SAIL_TRY(bura_lasīts(ceļš,
konteksts,
&attēls,
(nederīgs **)&attēla_pikseļi));

/*
* Šeit tiek apstrādāti saņemtie pikseļi.
* Lai to izdarītu, izmantojiet image->width, image->height, image->bytes_per_line,
* un image->pixel_format.
*/

/* Satīrīt */
bezmaksas(attēls_pikseļi);
sail_destroy_image(attēls);

Īss API līmeņu apraksts:

  • Iesācējs: "Es tikai vēlos lejupielādēt šo JPEG"
  • Papildu: "Es vēlos ielādēt šo animēto GIF no atmiņas"
  • Dziļjūras nirējs: "Es vēlos ielādēt šo animēto GIF no atmiņas un pilnībā kontrolēt izvēlētos kodekus un pikseļu izvadi."
  • Tehniskais ūdenslīdējs: “Es vēlos visu iepriekš minēto un savu datu avotu”

Tiešie konkurenti no tā paša apgabala:

  • Bezmaksas attēls
  • Velns
  • SDL_Attēls
  • WIC
  • imlib2
  • Boost.GIL
  • gdk-pixbuf

Atšķirības no citām bibliotēkām:

  • Cilvēka API ar paredzamajām entītijām - attēliem, paletēm utt.
  • Lielākā daļa kodeku var izvadīt vairāk nekā tikai RGB/RGBA pikseļus.
  • Lielākā daļa kodeku var izvadīt oriģinālos pikseļus bez pārveidošanas par RGB.
  • Varat rakstīt kodekus jebkurā valodā, kā arī pievienot/noņemt tos, nepārkompilējot visu projektu.
  • Saglabājiet informāciju par sākotnējo attēlu.
  • “Zondēšana” ir informācijas iegūšanas process par attēlu, nedekodējot pikseļu datus.
  • Izmērs un ātrums.

Avots: opennet.ru

Pievieno komentāru