Disponibile la libreria di decodifica delle immagini SAIL
Sotto licenza MIT pubblicato libreria di decodifica di immagini multipiattaforma SAIL. SAIL è un rebranding dei codec da un visualizzatore di immagini non supportato da tempo, riscritto in C KSquirrel, ma con un'API astratta di alto livello e numerosi miglioramenti. Destinatari: visualizzatori di immagini, sviluppo di giochi, caricamento di immagini in memoria per altri scopi. La libreria è in fase di sviluppo, ma è già utilizzabile. La compatibilità del codice binario e sorgente non è garantita in questa fase di sviluppo.
Возможности:
Una libreria semplice, compatta e veloce scritta in C senza dipendenze di terze parti (eccetto i codec);
API semplici, comprensibili e allo stesso tempo potenti per tutte le esigenze;
Associazioni per C++;
I formati di immagine sono supportati da codec caricati dinamicamente;
Leggi (e scrivi) immagini da un file, memoria o anche dalla tua fonte dati;
Determinare il tipo di immagine in base all'estensione del file o in base a numero magico;
Formati attualmente supportati: png (lettura, solo Windows), JPEG (lettura, scrittura) PNG (lettura, scrittura).
Sono in corso i lavori per aggiungere nuovi formati. KSquirrel-libs supporta circa 60 formati in un modo o nell'altro, i formati più popolari sono i primi in fila;
Le operazioni di lettura possono sempre restituire pixel in formato RGB e RGBA;
Alcuni codec possono emettere pixel in un elenco di formati ancora più ampio;
La maggior parte dei codec può anche emettere pixel SOURCE. Ciò è utile, ad esempio, per chi vuole ottenere informazioni complete da immagini CMYK o YCCK;
Lettura e scrittura di profili ICC;
Esempi in C, Qt, SDL;
Piattaforme supportate:
Windows (programma di installazione), macOS (brew) e Linux (Debian).
Cosa non fornisce SAIL:
Modifica delle immagini;
Funzioni di conversione dello spazio colore diverse da quelle fornite dai codec sottostanti (libjpeg, ecc.);
Funzioni di gestione del colore (uso dei profili ICC, ecc.)
L'esempio più semplice di decodifica in C:
struct sail_context *context;
SAIL_TRY(sail_init(&contesto));
struttura sail_image *immagine;
carattere senza segno *image_pixels;