Nën licencën MIT botuar biblioteka e dekodimit të imazheve ndër-platformë SAIL. SAIL është një riemërtim i kodekëve nga një shikues imazhi i pambështetur prej kohësh i rishkruar në C Ketri, por me një API abstrakte të nivelit të lartë dhe përmirësime të shumta. Audienca e synuar: shikuesit e imazheve, zhvillimi i lojës, ngarkimi i imazheve në kujtesë për qëllime të tjera. Biblioteka është në zhvillim e sipër, por tashmë është e përdorshme. Përputhshmëria binar dhe kodi burimor nuk garantohet në këtë fazë të zhvillimit.
Features:
Një bibliotekë e thjeshtë, kompakte dhe e shpejtë e shkruar në C pa varësi nga palët e treta (përveç kodekëve);
API e thjeshtë, e kuptueshme dhe në të njëjtën kohë e fuqishme për të gjitha nevojat;
Lidhjet për C++;
Formatet e imazhit mbështeten nga kodekë të ngarkuar në mënyrë dinamike;
Lexoni (dhe shkruani) imazhe nga një skedar, memorie, apo edhe nga burimi juaj i të dhënave;
Përcaktimi i llojit të imazhit sipas shtrirjes së skedarit ose sipas numër magjik;
Formatet e mbështetura aktualisht: png (lexo, vetëm Windows), JPEG (lexo, shkruaj) PNG (lexo, shkruaj).
Po punohet për shtimin e formateve të reja. KSquirrel-libs mbështeti rreth 60 formate në një mënyrë ose në një tjetër, formatet më të njohura janë të parat në radhë;
Operacionet e leximit mund të nxjerrin gjithmonë pikselë në formatin RGB dhe RGBA;
Disa kodekë mund të nxjerrin pikselë në një listë edhe më të madhe formatesh;
Shumica e kodekëve mund të nxjerrin gjithashtu pikselë SOURCE. Kjo është e dobishme, për shembull, për ata që duan të marrin informacion të plotë nga imazhet CMYK ose YCCK;
Leximi dhe shkrimi i profileve të ICC;
Shembuj në C, Qt, SDL;
Platformat e mbështetura:
Windows (instalues), macOS (brew) dhe Linux (Debian).
Çfarë nuk ofron SAIL:
Redaktimi i imazhit;
Funksionet e konvertimit të hapësirës së ngjyrave të ndryshme nga ato të ofruara nga kodekët themelorë (libjpeg, etj.);
Funksionet e menaxhimit të ngjyrave (përdorimi i profileve ICC, etj.)
Shembulli më i thjeshtë i deshifrimit në C:
struct sail_context *context;
SAIL_TRY(lundrimi_fillimi(&konteksti));
struct sail_image *image;
karakter i panënshkruar *image_pixels;
SAIL_TRY(lundrimi_lexuar(shtegu,
kontekst,
&imazh,
(i pavlefshëm **)&image_pixels));
/*
* Këtu përpunoni pikselët e marrë.
* Për ta bërë këtë, përdorni image->width, image->height, image->bytes_per_line,
* dhe imazh->format_piksel.
*/
/* Pastrimi */
i lirë (imazhi_pikselë);
lundroni_shkatërroj_imazhin(imazhin);
Përshkrim i shkurtër i niveleve të API:
Newbie: "Unë thjesht dua të shkarkoj këtë JPEG"
E avancuar: "Dua ta ngarkoj këtë GIF të animuar nga kujtesa"
Zhytësi në det të thellë: "Dua të ngarkoj këtë GIF të animuar nga memoria dhe të kem kontroll të plotë mbi kodekët dhe daljen e pikselëve që zgjedh."
Zhytësi teknik: "Unë dua gjithçka më lart, dhe burimin tim të të dhënave"
Konkurrentët e drejtpërdrejtë nga e njëjta zonë:
Imazhi i lirë
Djall
SDL_Image
WIC
imlib2
Boost.GIL
gdk-pixbuf
Dallimet nga bibliotekat e tjera:
API njerëzore me entitete të pritshme - imazhe, paleta, etj.
Shumica e kodekëve mund të nxjerrin më shumë se vetëm pikselë RGB/RGBA.
Shumica e kodekëve mund të nxjerrin pikselë origjinalë pa u konvertuar në RGB.
Ju mund të shkruani kodekë në çdo gjuhë, dhe gjithashtu t'i shtoni/fshini ato pa e rikompiluar të gjithë projektin.
Ruani informacionin rreth imazhit origjinal.
"Studimi" është procesi i marrjes së informacionit për një imazh pa deshifruar të dhënat e pikselit.