Maktaba ya kusimbua picha ya SAIL inapatikana

Chini ya leseni ya MIT iliyochapishwa maktaba ya kusimbua picha ya jukwaa la msalaba SAIL. SAIL ni kubadilisha jina la codecs kutoka kwa kitazamaji cha picha ambacho hakitumiki kwa muda mrefu kilichoandikwa upya katika C KSquirrel, lakini kwa API ya mukhtasari wa hali ya juu na maboresho mengi. Hadhira inayolengwa: watazamaji wa picha, ukuzaji wa mchezo, kupakia picha kwenye kumbukumbu kwa madhumuni mengine. Maktaba iko chini ya maendeleo, lakini tayari inatumika. Utangamano wa msimbo wa binary na chanzo haujahakikishwa katika hatua hii ya uundaji.

Fursa:

  • Maktaba rahisi, fupi na ya haraka iliyoandikwa katika C bila tegemezi za wahusika wengine (isipokuwa kodeki);
  • Rahisi, inayoeleweka na wakati huo huo API yenye nguvu kwa mahitaji yote;
  • Vifungo vya C++;
  • Miundo ya picha inasaidiwa na kodeki zilizopakiwa kwa nguvu;
  • Soma (na uandike) picha kutoka kwa faili, kumbukumbu, au hata chanzo chako cha data;
  • Kuamua aina ya picha kwa ugani wa faili, au kwa nambari ya uchawi;
  • Miundo inayotumika kwa sasa: png (soma, Windows pekee), JPEG (soma, andika) PNG (soma, andika).
    Kazi inaendelea ya kuongeza fomati mpya. KSquirrel-libs inaauni umbizo takriban 60 kwa njia moja au nyingine, umbizo maarufu zaidi ni la kwanza kwenye mstari;

  • Shughuli za kusoma zinaweza kutoa saizi katika umbizo la RGB na RGBA kila wakati;
  • Baadhi ya kodeki zinaweza kutoa saizi katika orodha kubwa zaidi ya umbizo;
  • Kodeki nyingi pia zinaweza kutoa pikseli SOURCE. Hii ni muhimu, kwa mfano, kwa wale ambao wanataka kupata habari kamili kutoka kwa picha za CMYK au YCCK;
  • Kusoma na kuandika wasifu wa ICC;
  • Mifano katika C, Qt, SDL;
  • Jukwaa zinazoungwa mkono:
    Windows (kisakinishaji), macOS (brew) na Linux (Debian).

Kile ambacho SAIL haitoi:

  • Uhariri wa picha;
  • Vitendaji vya kubadilisha nafasi ya rangi isipokuwa zile zinazotolewa na kodeki za msingi (libjpeg, n.k.);
  • Vipengele vya usimamizi wa rangi (matumizi ya wasifu wa ICC, n.k.)

Mfano rahisi zaidi wa kusimbua katika C:

struct sail_context *context;

SAIL_TRY(sail_init(&context));

struct sail_image *picha;
char ambayo haijasainiwa *pixel_pixel;

SAIL_TRY(tanga_soma(njia,
muktadha,
&picha,
(batili **)&pixel_pixel));

/*
* Hapa kuchakata saizi zilizopokelewa.
* Ili kufanya hivyo, tumia picha-> upana, picha-> urefu, picha->baiti_kwa_laini,
* na picha->umbizo_la_pixel.
*/

/* Safisha */
bure (pixel_pixel);
sail_destroy_image(picha);

Maelezo mafupi ya viwango vya API:

  • Newbie: "Nataka tu kupakua JPEG hii"
  • Advanced: "Nataka kupakia GIF hii iliyohuishwa kutoka kwa kumbukumbu"
  • Mpiga mbizi kwenye kina kirefu cha bahari: "Ninataka kupakia GIF hii iliyohuishwa kutoka kwa kumbukumbu na niwe na udhibiti kamili wa kodeki na matokeo ya pikseli ninayochagua."
  • Diver ya Kiufundi: "Nataka kila kitu hapo juu, na chanzo changu cha data"

Washindani wa moja kwa moja kutoka eneo moja:

  • Picha ya Bure
  • Shetani
  • Picha_ya_SDL
  • WIC
  • imlib2
  • Boost.GIL
  • gdk-pixbuf

Tofauti kutoka kwa maktaba zingine:

  • API ya kibinadamu yenye vyombo vinavyotarajiwa - picha, palettes, nk.
  • Kodeki nyingi zinaweza kutoa zaidi ya saizi za RGB/RGBA pekee.
  • Kodeki nyingi zinaweza kutoa saizi asili bila ubadilishaji hadi RGB.
  • Unaweza kuandika kodeki katika lugha yoyote, na pia kuziongeza/kuziondoa bila kurejesha mradi mzima.
  • Hifadhi habari kuhusu picha asili.
  • "Kuchunguza" ni mchakato wa kupata taarifa kuhusu picha bila kusimbua data ya pikseli.
  • Ukubwa na kasi.

Chanzo: opennet.ru

Kuongeza maoni