Opublikowano kilka znaczących aktualizacji biblioteki dekodowania obrazów SAIL, zapewniających przepisanie w języku C kodeków z dawno nieistniejącej przeglądarki obrazów KSquirrel, ale z abstrakcyjnym interfejsem API wysokiego poziomu i licznymi ulepszeniami. Biblioteka jest gotowa do użytku, ale wciąż jest udoskonalana. Zgodność plików binarnych i API nie jest jeszcze gwarantowana. Demonstracja.
Cechy żagla
- Szybka i łatwa w użyciu biblioteka;
- Napisane w C11 z powiązaniami z C++ 17;
- Obsługa formatów obrazów jest realizowana za pomocą dynamicznie ładowanych kodeków, które można usuwać i dodawać niezależnie od strony klienta;
- Odczyt z pliku, pamięci, źródeł własnych;
- Obsługa obrazów wielostronicowych i animowanych;
- Obsługa popularnych formatów nadal odbywa się przy użyciu odpowiednich bibliotek libjpeg, libpng itp.
- Wieloplatformowość: Linux, Windows, macOS;
- „Sondowanie” – uzyskiwanie informacji o obrazie bez dekodowania pikseli;
- Nazwy istot ludzkich (bez FIMULTIBITMAP);
- Czytanie i pisanie profili ICC;
- Wysyła piksele RGBA lub BGRA;
- Zwraca oryginalne piksele (na przykład CMYK), jeśli jest obsługiwane przez kodek;
Lista zmian od ostatniej publikacji:
- API zostało znacznie ulepszone i uproszczone. Było: structail_context *context; SAIL_TRY(żagiel_init(&kontekst)); struktura żagla_image *image; znak bez znaku *image_pixels; SAIL_TRY(sail_read(ścieżka, kontekst, &obraz, (void **)&piksele_obrazu)); ...wolny(piksele_obrazu); żagiel_destroy_image(image);
Teraz: struct żagl_image *image; SAIL_TRY(sail_read_file(path, &image); ... żaglowiec_destroy_image(image);
- Dodano formaty BMP, GIF, TIFF;
- Dostępność w VCPKG na wszystkich platformach z wyjątkiem UWP;
- Opublikowano testy wydajności benchmarków;
- Powiązanie C++ zostało przeniesione do C++ 17;
- Funkcje alokacji pamięci zebrano w jednym miejscu, dzięki czemu można je łatwo zastąpić własnymi, jednak na chwilę obecną można to zrobić jedynie poprzez rekompilację;
- Użytkownicy mogą teraz używać CMake find_package() do łączenia się z SAIL;
- Dodano możliwość kompilacji statycznej (SAIL_STATIC=ON);
- Dodano możliwość kompilacji wszystkich kodeków w jedną wspólną bibliotekę (SAIL_COMBINE_CODECS=ON);
- Rozpoczęto prace nad dodaniem testów opartych na µnitach;
Zalecana metoda instalacji
- Linux - dostępne są również reguły vcpkg i Debiana
- Windows - vcpkg
- macOS - napar
Źródło: opennet.ru