Flera stora uppdateringar av SAIL-bildavkodningsbiblioteket har publicerats, vilket ger en C-omskrivning av codecs från den sedan länge nedlagda KSquirrel-bildvisaren, men med ett abstrakt API på hög nivå och många förbättringar. Biblioteket är klart att användas, men förbättras fortfarande kontinuerligt. Binär och API-kompatibilitet är ännu inte garanterad. Demonstration.
Egenskaper hos SAIL
- Snabbt och lättanvänt bibliotek;
- Skrivet i C11 med bindningar till C++17;
- Stöd för bildformat implementeras av dynamiskt laddade codecs, som kan tas bort och läggas till oberoende av klientsidan;
- Läsa från fil, minne, egna källor;
- Stöd för flersidiga och animerade bilder;
- Stöd för populära format görs fortfarande med motsvarande bibliotek libjpeg, libpng, etc.
- Cross-platform: Linux, Windows, macOS;
- "Probing" - få information om en bild utan att avkoda pixlar;
- Mänskliga entitetsnamn (ingen FIMULTIBITMAP);
- Läsa och skriva ICC-profiler;
- Skickar RGBA- eller BGRA-pixlar;
- Returnerar originalpixlar (till exempel CMYK) om de stöds av codec;
Lista över ändringar sedan senaste publicering:
- API:et har förbättrats och förenklats avsevärt. Var: struct sail_context *kontext; SAIL_TRY(sail_init(&context)); struct sail_image *image; osignerad char *image_pixels; SAIL_TRY(sail_read(sökväg, sammanhang, &bild, (void **)&bildpixlar)); ... free(image_pixels); sail_destroy_image(bild);
Nu: struct sail_image *image; SAIL_TRY(sail_read_file(sökväg, &image); ... sail_destroy_image(image);
- Lade till BMP, GIF, TIFF-format;
- Tillgänglighet i VCPKG på alla plattformar utom UWP;
- Benchmark prestandatester publicerade;
- C++-bindning har flyttats till C++17;
- Minnesallokeringsfunktioner är samlade på ett ställe så att de enkelt kan ersättas med dina egna, men för närvarande kan detta bara göras genom att kompilera om;
- Användare kan nu använda CMake find_package() för att ansluta SAIL;
- Lade till möjligheten att statiskt kompilera (SAIL_STATIC=ON);
- Lade till möjligheten att kompilera alla codecs till ett gemensamt bibliotek (SAIL_COMBINE_CODECS=ON);
- Arbetet har påbörjats med att lägga till µnit-baserade tester;
Rekommenderad installationsmetod
- Linux - vcpkg, Debianregler är också tillgängliga
- Windows - vcpkg
- macOS - brygg
Källa: opennet.ru