Coder le PNG soi-même

Eric SIBERT

- Titre : Coder le PNG soi-même

- Auteur : Eric SIBERT

- Parution : 24 janvier 2003

- Mise à jour : 6 décembre 2019

- Licence : Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.

Sommaire

- I. Coder le PNG soi-même

I - Coder le PNG soi-même

Pas de grands discours.

Traduction de la norme png en français.

J'ai codé l'enregistrement d'un bitmap au format png en tenant compte de la transparence. Quelques remarques :

- le code est pour la CLX. Je l'ai testé avec D6 et K2. Ça doit pouvoir s'adapter facilement à la VCL ;

- la compression elle-même utilise une version Pascal de la zlib. Je l'ai récupérée quelque part sur Internet et je l'ai modifiée (conflit de nom avec Delphi et procédure qui posait problème). Ce n'est pas la version originale ;

- j’ai fait une bibliothèque en deux niveaux. Une partie de bas niveau dans le dossier bloc et une partie plus évoluée dans lib ;

- la fonction SaveToFilePng de l'unité PngAll permet un enregistrement complètement automatisé en essayant d'optimiser la taille du fichier (utilisation d'une palette si possible, en niveau de gris…).

Le paquet : PNG.zip (66 ko)

Pourquoi j'ai fait ça ?
Parce que Kylix repasse toujours les images en 16M de couleurs avant de les sauver.
Pour gérer les transparences.
Pour faire des enregistrements en streaming d'images, c'est-à-dire commencer la compression avant d'avoir toute l'image pour ne pas saturer la mémoire. Pour ça, il faut utiliser la partie bas niveau de la bibliothèque.