Na licencji MIT opublikowany wieloplatformowa biblioteka dekodowania obrazów SAIL. SAIL to rebranding kodeków z długo nieobsługiwanej przeglądarki obrazów napisanej w języku C KSwiewiórka, ale z abstrakcyjnym interfejsem API wysokiego poziomu i licznymi ulepszeniami. Grupa docelowa: przeglądarki obrazów, tworzenie gier, ładowanie obrazów do pamięci w innych celach. Biblioteka jest w fazie rozwoju, ale już można z niej korzystać. Na tym etapie rozwoju nie jest gwarantowana kompatybilność kodu binarnego i kodu źródłowego.
Cechy:
Prosta, kompaktowa i szybka biblioteka napisana w C bez zależności innych firm (z wyjątkiem kodeków);
Proste, zrozumiałe i jednocześnie potężne API dla wszystkich potrzeb;
Powiązania dla C++;
Formaty obrazów są obsługiwane przez dynamicznie ładowane kodeki;
Odczytuj (i zapisuj) obrazy z pliku, pamięci, a nawet własnego źródła danych;
Określanie typu obrazu według rozszerzenia pliku lub według magiczny numer;
Aktualnie obsługiwane formaty: png (odczyt, tylko Windows), JPEG (odczyt, zapis) PNG (odczyt, zapis).
Trwają prace nad dodaniem nowych formatów. KSquirrel-libs obsługuje w ten czy inny sposób około 60 formatów, najpopularniejsze formaty są na pierwszym miejscu;
Operacje odczytu mogą zawsze wyprowadzać piksele w formacie RGB i RGBA;
Niektóre kodeki mogą wyświetlać piksele w jeszcze większej liczbie formatów;
Większość kodeków może również wysyłać piksele SOURCE. Jest to przydatne na przykład dla tych, którzy chcą uzyskać pełną informację z obrazów CMYK lub YCCK;
Czytanie i pisanie profili ICC;
Przykłady w C, Qt, SDL;
Obsługiwane platformy:
Windows (instalator), macOS (brew) i Linux (Debian).
Czego SAIL nie zapewnia:
Edycja obrazka;
Funkcje konwersji przestrzeni kolorów inne niż te udostępniane przez podstawowe kodeki (libjpeg itp.);
Funkcje zarządzania kolorami (wykorzystanie profili ICC itp.)
Najprostszy przykład dekodowania w C:
struktura żagla_kontekst *kontekst;
SAIL_TRY(żagiel_init(&kontekst));
struktura żagla_image *image;
znak bez znaku *image_pixels;