Sous licence MIT publié par bibliothèque de décodage d'images multiplateforme SAIL. SAIL est un changement de nom des codecs d'une visionneuse d'images longtemps non prise en charge, réécrite en C KÉcureuil, mais avec une API abstraite de haut niveau et de nombreuses améliorations. Public cible : visionneuses d'images, développement de jeux, chargement d'images en mémoire à d'autres fins. La bibliothèque est en cours de développement, mais est déjà utilisable. La compatibilité du code binaire et source n'est pas garantie à ce stade de développement.
Caractéristiques:
Une bibliothèque simple, compacte et rapide écrite en C sans dépendances tierces (sauf codecs) ;
API simple, compréhensible et en même temps puissante pour tous les besoins ;
Liaisons pour C++ ;
Les formats d'image sont pris en charge par des codecs chargés dynamiquement ;
Lisez (et écrivez) des images à partir d'un fichier, d'une mémoire ou même de votre propre source de données ;
Détermination du type d'image par extension de fichier ou par nombre magique;
Formats actuellement pris en charge : APNG (lecture, Windows uniquement), JPEG (lecture, écriture) PNG (lecture, écriture).
Des travaux sont en cours pour ajouter de nouveaux formats. KSquirrel-libs supportait environ 60 formats d'une manière ou d'une autre, les formats les plus populaires étant en première ligne ;
Les opérations de lecture peuvent toujours générer des pixels au format RVB et RGBA ;
Certains codecs peuvent générer des pixels dans une liste de formats encore plus longue ;
La plupart des codecs peuvent également générer des pixels SOURCE. Ceci est utile, par exemple, pour ceux qui souhaitent obtenir des informations complètes à partir d'images CMJN ou YCCK ;
Lire et rédiger des profils ICC ;
Exemples en C, Qt, SDL ;
Plateformes prises en charge :
Windows (installateur), macOS (brew) et Linux (Debian).
Ce que SAIL ne fournit pas :
L'édition d'image;
Fonctions de conversion d'espace colorimétrique autres que celles fournies par les codecs sous-jacents (libjpeg, etc.) ;
Fonctions de gestion des couleurs (utilisation de profils ICC, etc.)
L'exemple le plus simple de décodage en C :
struct sail_context *contexte;
SAIL_TRY(sail_init(&context));
struct voile_image *image;
caractère non signé *image_pixels ;
SAIL_TRY(sail_read(chemin,
le contexte,
&image,
(void **)&image_pixels));
/*
* Traitez ici les pixels reçus.
* Pour ce faire, utilisez image->width, image->height, image->bytes_per_line,
* et image->pixel_format.
*/
Avancé : "Je souhaite charger ce GIF animé depuis la mémoire"
Plongeur en haute mer : "Je souhaite charger ce GIF animé depuis la mémoire et avoir un contrôle total sur les codecs et la sortie de pixels que je choisis."
Plongeur technique : « Je veux tout ce qui précède et ma propre source de données »
Concurrents directs de la même zone :
FreeImage
Diable
Image_SDL
WIC
imlib2
Boost.GIL
gdk-pixbuf
Différences avec les autres bibliothèques :
API humaine avec les entités attendues - images, palettes, etc.
La plupart des codecs peuvent produire plus que de simples pixels RVB/RGBA.
La plupart des codecs peuvent produire des pixels originaux sans conversion en RVB.
Vous pouvez écrire des codecs dans n'importe quelle langue, et également les ajouter/supprimer sans recompiler l'intégralité du projet.
Conserver les informations sur l'image originale.
Le « sondage » est le processus consistant à obtenir des informations sur une image sans décoder les données des pixels.