SAIL mufananidzo decoding raibhurari iripo

Pasi peMIT rezinesi rakabudiswa muchinjika-chikuva mufananidzo decoding raibhurari SAIL. SAIL kudhindwa patsva kwemacodecs kubva kune-refu-isina kutsigirwa mufananidzo wekuona akanyorwa patsva muC KSquirrel, asi ine yepamusoro-level abstract API uye kwakawanda kuvandudzwa. Vatariri vateereri: vataridzi vemifananidzo, kusimudzira kwemutambo, kurodha mifananidzo mundangariro kune zvimwe zvinangwa. Raibhurari iri kugadziridzwa, asi yave kutoshandiswa. Binary uye sosi kodhi kuenderana hakuna kuvimbiswa panguva ino yekuvandudza.

Zviratidzo:

  • Raibhurari yakapfava, yakabatana uye inokurumidza yakanyorwa muC isina kutsamira kune wechitatu (kunze kwemacodecs);
  • Yakareruka, inonzwisisika uye panguva imwechete ine simba API yezvese zvinodiwa;
  • Zvisungo zveC ++;
  • Mafomati emifananidzo anotsigirwa nemacodecs ane simba;
  • Verenga (uye nyora) mifananidzo kubva mufaira, ndangariro, kana kunyange yako wega data sosi;
  • Kusarudza rudzi rwechifananidzo nekuwedzera faira, kana ne magic number;
  • Mafomati anotsigirwa parizvino: png (verenga, Windows chete), JPEG (verenga, nyora) PNG (verenga, nyora).
    Basa riri kuenderera mberi rekuwedzera mafomati matsva. KSquirrel-libs inotsigira anenge makumi matanhatu mafomati neimwe nzira, iyo inonyanya kufarirwa mafomati ekutanga mumutsara;

  • Verenga mashandiro anogona kugara achiburitsa pixels muRGB uye RGBA fomati;
  • Mamwe macodecs anogona kuburitsa pixels mune yakatokura runyorwa rwemafomati;
  • Mazhinji macodecs anogona zvakare kuburitsa SOURCE pixels. Izvi zvinobatsira, semuenzaniso, kune avo vanoda kuwana ruzivo rwakakwana kubva kuCMYK kana YCCK mifananidzo;
  • Kuverenga nekunyora ICC profiles;
  • Mienzaniso muC, Qt, SDL;
  • Anotsigirwa mapuratifomu:
    Windows (installer), macOS (brew) uye Linux (Debian).

Izvo SAIL isingapi:

  • Kugadzirisa mufananidzo;
  • Ruvara nzvimbo yekushandura mabasa kunze kweaya akapihwa neakadzika macodecs (libjpeg, nezvimwewo);
  • Mavara ekutonga mabasa (kushandiswa kweICC profiles, nezvimwewo)

Muenzaniso wakapusa wekunyora muC:

struct sail_context *context;

SAIL_TRY(sail_init(&context));

struct sail_image *image;
char isina kusaina *image_pixels;

SAIL_TRY(seiri_verenga(nzira,
mamiriro,
& mufananidzo,
(isina **)&image_pixels));

/*
* Pano gadzirisa mapikseli akagamuchirwa.
* Kuti uite izvi, shandisa mufananidzo-> hupamhi, mufananidzo-> urefu, mufananidzo-> bytes_per_line,
* uye mufananidzo->pixel_format.
*/

/* Tsvaira */
mahara (mufananidzo_pixels);
sail_destroy_image(mufananidzo);

Tsanangudzo pfupi yemazinga eAPI:

  • Newbie: "Ndinongoda kudhawunirodha iyi JPEG"
  • Advanced: "Ndinoda kurodha iyi animated GIF kubva mundangariro"
  • Diver yegungwa rakadzika: "Ini ndinoda kurodha iyi animated GIF kubva mundangariro uye ndive nekutonga kuzere pamusoro pemacodecs uye pixel inobuda yandinosarudza."
  • Technical Diver: "Ndinoda zvese zviri pamusoro, uye neyangu data sosi"

Direct vakwikwidzi kubva munzvimbo imwechete:

  • FreeImage
  • Dhiyabhorosi
  • SDL_Mufananidzo
  • WIC
  • imlib2
  • Boost.GIL
  • gdk-pixbuf

Misiyano kubva kune mamwe maraibhurari:

  • Human API ine masangano anotarisirwa - mifananidzo, palettes, nezvimwe.
  • Mazhinji macodecs anogona kuburitsa zvinopfuura RGB/RGBA pixels chete.
  • Mazhinji macodecs anogona kuburitsa epakutanga pixels pasina kutendeuka kuRGB.
  • Iwe unogona kunyora macodecs mune chero mutauro, uye zvakare kuwedzera / kubvisa iwo pasina kudzoreredza purojekiti yese.
  • Chengetedza ruzivo nezve mufananidzo wekutanga.
  • "Kuongorora" inzira yekuwana ruzivo nezve chifananidzo pasina kudhikodha data repixel.
  • Saizi uye nekukurumidza.

Source: opennet.ru

Voeg