Veröffentlichung der Bilddekodierungsbibliothek SAIL 0.9.0-pre12

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

Kommentar hinzufügen