Er zijn verschillende belangrijke updates van de SAIL-beelddecoderingsbibliotheek gepubliceerd, die een C-herschrijving van de codecs van de lang ter ziele gegane KSquirrel-beeldviewer bieden, maar met een abstracte API op hoog niveau en talrijke verbeteringen. De bibliotheek is klaar voor gebruik, maar wordt nog steeds continu verbeterd. Binaire en API-compatibiliteit is nog niet gegarandeerd. Demonstratie.
Kenmerken van SAIL
- Snelle en eenvoudig te gebruiken bibliotheek;
- Geschreven in C11 met bindingen naar C++17;
- Ondersteuning voor afbeeldingsformaten wordt geïmplementeerd door dynamisch geladen codecs die onafhankelijk van de clientzijde kunnen worden verwijderd en toegevoegd;
- Lezen uit bestand, geheugen, eigen bronnen;
- Ondersteuning voor afbeeldingen met meerdere pagina's en animaties;
- Ondersteuning voor populaire formaten wordt nog steeds gedaan met behulp van de overeenkomstige bibliotheken libjpeg, libpng, enz.
- Cross-platform: Linux, Windows, macOS;
- "Probing" - informatie verkrijgen over een afbeelding zonder pixels te decoderen;
- Namen van menselijke entiteiten (geen FIMULTIBITMAP);
- ICC-profielen lezen en schrijven;
- Verzendt RGBA- of BGRA-pixels;
- Retourneert originele pixels (bijvoorbeeld CMYK) indien ondersteund door de codec;
Lijst met wijzigingen sinds de laatste publicatie:
- De API is aanzienlijk verbeterd en vereenvoudigd. Was: struct sail_context *context; SAIL_TRY(zeil_init(&context)); struct zeil_image *image; niet-ondertekende char *image_pixels; SAIL_TRY(sail_read(pad, context, &afbeelding, (leegte **)&afbeeldingspixels)); ...vrij(afbeelding_pixels); sail_destroy_image(afbeelding);
Nu: struct sail_image *image; SAIL_TRY(zeil_leesbestand(pad, &afbeelding); ... sail_destroy_image(afbeelding);
- BMP-, GIF- en TIFF-formaten toegevoegd;
- Beschikbaarheid in VCPKG op alle platforms behalve UWP;
- Benchmark prestatietests gepubliceerd;
- C++-binding is verplaatst naar C++17;
- Geheugentoewijzingsfuncties worden op één plek verzameld, zodat ze gemakkelijk kunnen worden vervangen door uw eigen functies, maar op dit moment kan dit alleen worden gedaan door opnieuw te compileren;
- Gebruikers kunnen nu CMake find_package() gebruiken om SAIL te verbinden;
- De mogelijkheid toegevoegd om statisch te compileren (SAIL_STATIC=ON);
- De mogelijkheid toegevoegd om alle codecs in één gemeenschappelijke bibliotheek te compileren (SAIL_COMBINE_CODECS=ON);
- Er is begonnen met het toevoegen van op µnit gebaseerde tests;
Aanbevolen installatiemethode
- Linux - vcpkg, Debian-regels zijn ook beschikbaar
- Windows - vcpkg
- macOS - brouwen
Bron: opennet.ru