Coder le PNG soi-même

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

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. Ca 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 librairie 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ée 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 enregistrement 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 librairie.

Liste de mes articles :
Types énumérés, intervalle et ensemble
MMX avec Delphi 6 / Kylix
Préchargement de données dans le cache
MMX ( 2 ) avec Delphi 6 / Kylix
Instructions SIMD sur les réels
Internationaliser un projet Delphi
Installer D6 sous Windows 95
Tramage d'une image
Coder le PNG soi-même
Utiliser LibTiff avec Delphi
Ecrire une UDF FireBird avec Kylix

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.