SAIL-malkoda biblioteko havebla

Sub MIT-licenco eldonita plurplatforma bildmalkoda biblioteko SAIL. SAIL estas remarkado de kodekoj de longe nesubtenata bildspektilo reverkita en C KSquirrel, sed kun altnivela abstrakta API kaj multaj plibonigoj. Celita publiko: bildspektantoj, luddisvolviĝo, ŝarĝado de bildoj en memoron por aliaj celoj. La biblioteko estas evoluinta, sed jam estas uzebla. Duuma kaj fontkoda kongruo ne estas garantiita en ĉi tiu etapo de evoluo.

Karakterizaĵoj:

  • Simpla, kompakta kaj rapida biblioteko skribita en C sen triaj dependecoj (krom kodekoj);
  • Simpla, komprenebla kaj samtempe potenca API por ĉiuj bezonoj;
  • Ligoj por C++;
  • Bildaj formatoj estas subtenataj de dinamike ŝargitaj kodekoj;
  • Legu (kaj skribu) bildojn el dosiero, memoro aŭ eĉ via propra datumfonto;
  • Determinante la bildspecon per dosiera etendo, aŭ per magia nombro;
  • Nuntempe subtenataj formatoj: png (legu, nur Vindozo), JPEG (legu, skribu) PNG (legu, skribu).
    Laboras por aldoni novajn formatojn. KSquirrel-libs subtenis ĉirkaŭ 60 formatojn en unu maniero aŭ alia, la plej popularaj formatoj estas la unuaj en linio;

  • Legaj operacioj ĉiam povas eligi pikselojn en formato RGB kaj RGBA;
  • Iuj kodekoj povas eligi pikselojn en eĉ pli granda listo de formatoj;
  • Plej multaj kodekoj ankaŭ povas eligi SOURCE-pikselojn. Ĉi tio estas utila, ekzemple, por tiuj, kiuj volas ricevi plenajn informojn de CMYK aŭ YCCK-bildoj;
  • Legado kaj skribado de ICC-profiloj;
  • Ekzemploj en C, Qt, SDL;
  • Subtenitaj platformoj:
    Vindozo (instalilo), macOS (biero) kaj Linukso (Debiano).

Kion SAIL ne provizas:

  • Bilda redaktado;
  • Kolorspacaj konvertaj funkcioj krom tiuj provizitaj per subaj kodekoj (libjpeg, ktp.);
  • Koloraj administradfunkcioj (uzo de ICC-profiloj, ktp.)

La plej simpla ekzemplo de malkodado en C:

struct sail_context *kunteksto;

SAIL_PROVI(sail_init(&kunteksto));

struct sail_image *bildo;
nesubskribita char *bildo_pikseloj;

SAIL_TRY(vel_legi(vojo,
kunteksto,
&bildo,
(malplena **)&bildpikseloj));

/*
* Ĉi tie prilaboru la ricevitajn pikselojn.
* Por fari tion, uzu bildo->larĝo, bildo->alteco, bildo->bajtoj_per_linio,
* kaj bildo->piksela_formato.
*/

/* Purigado */
libera(bildo_pikseloj);
vel_detrui_bildon(bildo);

Mallonga priskribo de API-niveloj:

  • Novulo: "Mi nur volas elŝuti ĉi tiun JPEG"
  • Altnivela: "Mi volas ŝargi ĉi tiun viglan GIF el memoro"
  • Submara plonĝisto: "Mi volas ŝargi ĉi tiun viglan GIF el memoro kaj havi plenan kontrolon de la kodekoj kaj piksela eligo, kiujn mi elektas."
  • Teknika Plonĝisto: "Mi volas ĉion supre, kaj mian propran datumfonton"

Rektaj konkurantoj de la sama areo:

  • FreeImage
  • DEVIL
  • SDL_Bildo
  • WIC
  • imlib2
  • Boost.GIL
  • gdk-pixbuf

Diferencoj de aliaj bibliotekoj:

  • Homa API kun atendataj estaĵoj - bildoj, paletoj, ktp.
  • Plej multaj kodekoj povas eligi pli ol nur RGB/RGBA-pikselojn.
  • Plej multaj kodekoj povas eligi originalajn pikselojn sen konvertiĝo al RGB.
  • Vi povas skribi kodekojn en iu ajn lingvo, kaj ankaŭ aldoni/forigi ilin sen rekompili la tutan projekton.
  • Konservu informojn pri la originala bildo.
  • "Sondado" estas la procezo akiri informojn pri bildo sen malkodi la pikselojn.
  • Grandeco kaj rapideco.

fonto: opennet.ru

Aldoni komenton