Ang SAIL image decoding library anaa

Ubos sa lisensya sa MIT gipatik cross-platform image decoding library SAIL. Ang SAIL usa ka rebranding sa mga codec gikan sa dugay na nga wala suportado nga tigtan-aw sa imahe nga gisulat pag-usab sa C KSquirrel, apan adunay taas nga lebel nga abstract API ug daghang mga pag-uswag. Target nga mamiminaw: mga tumatan-aw sa imahe, pag-uswag sa dula, pagkarga sa mga imahe sa memorya alang sa ubang mga katuyoan. Ang librarya ubos sa pag-uswag, apan magamit na. Ang binary ug source code compatibility dili garantiya sa kini nga yugto sa kalamboan.

Mga Feature:

  • Usa ka yano, compact ug paspas nga librarya nga gisulat sa C nga walay mga dependency sa ikatulo nga partido (gawas sa mga codec);
  • Yano, masabtan ug sa samang higayon gamhanan nga API alang sa tanang panginahanglan;
  • Mga binding para sa C++;
  • Ang mga format sa imahe gisuportahan sa mga codec nga dinamikong gikarga;
  • Basaha (ug isulat) ang mga hulagway gikan sa usa ka file, memorya, o bisan sa imong kaugalingong tinubdan sa datos;
  • Pagtino sa tipo sa imahe pinaagi sa extension sa file, o pinaagi sa magic nga numero;
  • Gisuportahan karon nga mga format: png (pagbasa, Windows lamang), JPEG (pagbasa, pagsulat) PNG (pagbasa, pagsulat).
    Nagpadayon ang trabaho aron makadugang bag-ong mga format. Gisuportahan sa KSquirrel-libs ang mga 60 nga mga format sa usa ka paagi o lain, ang labing inila nga mga format una sa linya;

  • Ang mga operasyon sa pagbasa kanunay nga maka-output sa mga pixel sa RGB ug RGBA nga format;
  • Ang ubang mga codec makapagawas ug mga pixel sa mas dako pa nga listahan sa mga format;
  • Kadaghanan sa mga codec mahimo usab nga mag-output sa SOURCE pixels. Kini mapuslanon, pananglitan, alang niadtong gusto nga makakuha og bug-os nga impormasyon gikan sa CMYK o YCCK nga mga hulagway;
  • Pagbasa ug pagsulat sa mga profile sa ICC;
  • Mga pananglitan sa C, Qt, SDL;
  • Gisuportahan nga mga platform:
    Windows (installer), macOS (brew) ug Linux (Debian).

Unsa ang wala gihatag sa SAIL:

  • Pag-edit sa hulagway;
  • Ang mga gimbuhaton sa pagbag-o sa kolor sa wanang gawas sa gihatag sa nagpahiping mga codec (libjpeg, ug uban pa);
  • Mga gimbuhaton sa pagdumala sa kolor (paggamit sa mga profile sa ICC, ug uban pa)

Ang pinakasimple nga pananglitan sa pag-decode sa C:

struct sail_context *konteksto;

SAIL_TRY(sail_init(&konteksto));

struct sail_image *image;
unsigned char *image_pixels;

SAIL_TRY(sail_read(dalan,
konteksto,
&larawan,
(walay **)&image_pixels));

/*
* Dinhi iproseso ang nadawat nga mga pixel.
* Aron mahimo kini, gamita ang imahe-> gilapdon, imahe-> gitas-on, imahe->bytes_per_line,
* ug imahe->pixel_format.
*/

/* Paglimpyo */
libre(image_pixels);
sail_destroy_image(larawan);

Mubo nga paghulagway sa lebel sa API:

  • Newbie: "Gusto lang nako i-download kini nga JPEG"
  • Advanced: "Gusto nakong i-load kining animated GIF gikan sa memorya"
  • Deep sea diver: "Gusto nakong i-load kini nga animated GIF gikan sa memorya ug adunay bug-os nga kontrol sa mga codec ug pixel output nga akong gipili."
  • Technical Diver: "Gusto ko ang tanan sa ibabaw, ug ang akong kaugalingon nga tinubdan sa datos"

Direkta nga mga kakompetensya gikan sa parehas nga lugar:

  • Libre nga Hulagway
  • Yawa
  • SDL_Hulagway
  • WIC
  • imlib2
  • Boost.GIL
  • gdk-pixbuf

Mga kalainan sa ubang mga librarya:

  • Tawo nga API nga adunay gipaabut nga mga entidad - mga imahe, palette, ug uban pa.
  • Kadaghanan sa mga codec makahimo og labaw pa sa RGB/RGBA pixels.
  • Kadaghanan sa mga codec makahimo sa pag-output sa orihinal nga mga pixel nga walay pagkakabig sa RGB.
  • Mahimo nimong isulat ang mga codec sa bisan unsang lengguwahe, ug usab idugang / tangtangon kini nga wala’y pag-recompile sa tibuuk nga proyekto.
  • Pagtipig og impormasyon mahitungod sa orihinal nga hulagway.
  • Ang "Pagsusi" mao ang proseso sa pagkuha og impormasyon bahin sa usa ka hulagway nga walay pag-decode sa pixel data.
  • Gidak-on ug gikusgon.

Source: opennet.ru

Idugang sa usa ka comment