Bibliothèque de décodage d'images SAIL disponible

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.
*/

/* Nettoyer */
gratuit(image_pixels);
sail_destroy_image(image);

Brève description des niveaux d'API :

  • Débutant : "Je veux juste télécharger ce JPEG"
  • 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.
  • Taille et vitesse.

Source: opennet.ru

Ajouter un commentaire