Es wurden mehrere wichtige Aktualisierungen der SAIL-Bilddekodierungsbibliothek veröffentlicht, die eine C-Neufassung der Codecs des längst nicht mehr existierenden KSquirrel-Bildbetrachters bieten, jedoch mit einer abstrakten API auf hoher Ebene und zahlreichen Verbesserungen. Die Bibliothek ist einsatzbereit, wird aber weiterhin kontinuierlich verbessert. Die Binär- und API-Kompatibilität ist noch nicht garantiert. Demonstration.
Merkmale von SAIL
- Schnell und einfach zu verwendende Bibliothek;
- Geschrieben in C11 mit Bindungen an C++17;
- Die Unterstützung von Bildformaten wird durch dynamisch geladene Codecs implementiert, die unabhängig von der Clientseite entfernt und hinzugefügt werden können;
- Lesen aus Datei, Speicher, eigenen Quellen;
- Unterstützung für mehrseitige und animierte Bilder;
- Die Unterstützung gängiger Formate erfolgt weiterhin über die entsprechenden Bibliotheken libjpeg, libpng usw.
- Plattformübergreifend: Linux, Windows, macOS;
- „Probing“ – Informationen über ein Bild erhalten, ohne Pixel zu dekodieren;
- Namen menschlicher Entitäten (kein FIMULTIBITMAP);
- Lesen und Schreiben von ICC-Profilen;
- Sendet RGBA- oder BGRA-Pixel;
- Gibt Originalpixel zurück (z. B. CMYK), sofern vom Codec unterstützt;
Liste der Änderungen seit der letzten Veröffentlichung:
- Die API wurde deutlich verbessert und vereinfacht. War: struct sail_context *context; SAIL_TRY(sail_init(&context)); struct Sail_image *image; unsigned char *image_pixels; SAIL_TRY(sail_read(path, context, &image, (void **)&image_pixels)); ...free(image_pixels); sail_destroy_image(image);
Jetzt: struct sail_image *image; SAIL_TRY(sail_read_file(path, &image); ... Sail_destroy_image(image);
- BMP-, GIF- und TIFF-Formate hinzugefügt;
- Verfügbarkeit in VCPKG auf allen Plattformen außer UWP;
- Benchmark-Leistungstests veröffentlicht;
- Die C++-Bindung wurde nach C++17 verschoben;
- Speicherzuweisungsfunktionen werden an einem Ort gesammelt, sodass sie leicht durch eigene ersetzt werden können. Dies ist derzeit jedoch nur durch Neukompilieren möglich.
- Benutzer können jetzt CMake find_package() verwenden, um SAIL zu verbinden;
- Möglichkeit zum statischen Kompilieren hinzugefügt (SAIL_STATIC=ON);
- Möglichkeit hinzugefügt, alle Codecs in einer gemeinsamen Bibliothek zu kompilieren (SAIL_COMBINE_CODECS=ON);
- Die Arbeiten zur Hinzufügung µnit-basierter Tests haben begonnen;
Empfohlene Installationsmethode
- Linux – vcpkg, Debian-Regeln sind ebenfalls verfügbar
- Windows – vcpkg
- macOS – brauen
Source: opennet.ru