Sono state pubblicate diverse rilevanti aggiornamenti della libreria di decodifica delle immagini SAIL, che offre codecs riscritti in C provenienti dal dismesso visualizzatore di immagini KSquirrel, ma con un'API astratta di alto livello e numerosi miglioramenti. La libreria è pronta per l'uso, ma continua a essere migliorata. La compatibilità binaria e API non è ancora garantita. Dimostrazione.
Caratteristiche di SAIL
- Libreria veloce e facile da usare;
- Scritta in C11 con binding per C++17;
- Il supporto per i formati delle immagini è implementato tramite codec caricabili dinamicamente, che possono essere aggiunti e rimossi indipendentemente dalla parte client;
- Lettura da file, memoria, fonti proprie;
- Supporto per immagini multitraccia e animate;
- Il supporto per formati popolari è comunque effettuato tramite librerie corrispondenti come libjpeg, libpng, ecc.
- Cross-platform: Linux, Windows, macOS;
- Probing - ottenere informazioni sull'immagine senza decodificare i pixel;
- Nomi umani per entità (niente FIMULTIBITMAP);
- Lettura e scrittura di profili ICC;
- Restituisce pixel RGBA o BGRA;
- Restituisce pixel originali (ad esempio, CMYK) se supportati dal codec;
Elenco delle modifiche dalla pubblicazione precedente:
- API notevolmente migliorata e semplificata. Era: struct sail_context *context; SAIL_TRY(sail_init(&context)); struct sail_image *image; unsigned char *image_pixels; SAIL_TRY(sail_read(path, context, (void **)&image, &image_pixels)); … free(image_pixels); sail_destroy_image(image);
Diventato: struct sail_image *image; SAIL_TRY(sail_read_file(path, &image); … sail_destroy_image(image);
- Aggiunti i formati BMP, GIF, TIFF;
- Disponibilità in VCPKG su tutte le piattaforme tranne UWP;
- Pubblicati test comparativi delle prestazioni;
- Binding C++ aggiornato a C++17;
- Le funzioni di allocazione della memoria sono state raccolte in un unico luogo, per facilitarne la sostituzione, ma attualmente questo può essere fatto solo ricompilando;
- Gli utenti possono ora utilizzare CMake find_package() per collegare SAIL;
- Aggiunta la possibilità di compilazione statica (SAIL_STATIC=ON);
- Aggiunta la possibilità di compilare tutti i codec in un'unica libreria condivisa (SAIL_COMBINE_CODECS=ON);
- Iniziati i lavori per aggiungere test basati su µnit;
Metodo di installazione consigliato
- Linux — vcpkg, disponibili anche le regole Debian
- Windows — vcpkg
- macOS — brew
Fonte: opennet.ru
