<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>libimage: le(s) format(s) de fichier</title> <link rel="stylesheet" type="text/css" href="libimage.css"> <meta name="generator" content="Vim et huile de phalange"> <meta name="keywords" content="libimage, convpht, TGA, Fits, Boudet, Targa, PHT, bmp"> </head> <body> <h1><a name="top">libimage / fichiers</a></h1> <p align=center> <tt>dernière mise à jour: 19 mars 2010</tt><br> </p> <p> Cette page décrit les différents formats de fichier que sait gérer la <a href="libimage.html">libimage</a>. Le format de fichier <i>originel</i> de cette bibliothèque est le <b>.TGA</b> 24 bits non compressé. Les autres ont été rajoutés par la suite, et ne sont pas aussi testés que l'originel. D'autre part, c'est dans ces fonctions que le problème du <small>BOUTISME</small> est le plus flagrant: en gros vous risquez le coredump sur autre chose qu'un i386. </p> <p class="menuhaut"> [<a href="libimage.html#primitives">primitives</a>] <br> [<a href="#tga">TGA</a>] [<a href="#bmp">BMP</a>] [<a href="#pcx">PCX</a>] [<a href="#pht">PHT</a>] [<a href="#pnm">PNM</a>] [<a href="#fits">FITS</a>] [<a href="#jpeg">JPEG</a>] [<a href="#ptl">PTL</a>] [<a href="#eps">EPS</a>] <br> [<a href="img-outils.html#export">export</a>] [<a href="#liens">liens</a>] </p> <h2><a name="tga">TGA</a></h2> <dl class="proto"> <dt>int Image_TGA_save(char *filename, Image_Desc *img, int compress); <dd>Le paramètre <tt>compress</tt> doit actuellement être à 0. Fonction qui ne semble plus victime de boutisme. Par contre, il manque <i>toujours</i> la compression. <dt>int Image_TGA_save_component(char *nom, Image_Desc *img, char channel, int comp); <dd>La composante <tt>channel</tt> ('r', 'g' ou 'b') sera sauvée sous la forme d'un tga monochrome avec une palette. Et il manque aussi la compression. <dt>Image_Desc * Image_TGA_alloc_load(char *nom); <dd>...... En gros, ça prend un fichier .TGA sur le disque, et ça le met dans une image, allouée à la volée. Les images compressées ne sont pas traitées, hélas. En détail, <a href="img-devel.html#utsl">utsl</a>. </dl> <p class="HDP"><a href="#top">haut de page</a></p> <h2><a name="bmp">BMP</a></h2> <dl class="proto"> <dt>Image_BMP_save_24(char *filename, Image_Desc *img, int flag); <dd>Sauvegarde d'une image au format BMP 24 bits non compressé (au fait, ça se compresse un bmp ?). En théorie, cette fonction est exempte des problèmes de boutisme. Hélas, un bug persistant fait que ça ne marche pas très bien. <dt>int Image_BMP_infos(char *nom, int *pw, int *ph, int *pt, int verb); <dd>Récupère, et éventuellement affiche (si verb!=0) quelques informations pertinentes sur un fichier bmp. Le retour <tt>*pt</tt> contient le nombre de bits par pixel. <dt>Image_Desc * Image_BMP_alloc_load(char *nom, int reserved); <dd>Allocation et chargement d'une image bmp. Actuellement (décembre 2003) seul quelques types sont mal supportés. Les autres ne le sont pas du tout. </dl> <p>Bien évidement, la mauvaise qualité de la gestion de ce format est la conséquence de la flemme de <i>tTh</i>. Si vous voulez voir ça de plus près, il y a un <tt>testbmp.c</tt> dans le tarball.</p> <p class="HDP"><a href="#top">haut de page</a></p> <h2><a name="pcx">PCX</a></h2> <p> <font color="ff0000">En cours...</font><br> Première étape: les fichier en 16 couleurs à palette. Mais ça ne marche pas encore... Dommage, ça serait bien pour les <a href="img-dither.html">dithering</a>. <br> Deuxième étape: les images binaires, qui seront bien utiles pour les <a href="img-bitplane.html">bitplanes</a>. </p> <dl class="proto"> <dt>int Image_PCX_fileinfo(char *nom); <dd>Affiche toutes les informations que l'on envisage de trouver dans le header d'un fichier PCX. <dt>int Image_wrPCX_8colors(char *nom, Image_Desc *im); <dd>Euh, comment dire ?... Ça ne marche probablement pas. </dl> <p>Bien évidement, la mauvaise qualité de la gestion de ce format est la conséquence de la flemme de <i>tTh</i>. Si vous voulez voir ça de plus près, il y a un <tt>testpcx.c</tt> dans le tarball.</p> <p class="HDP"><a href="#top">haut de page</a></p> <h2><a name="pht">PHT</a></h2> <p>Ce format, totalement ouvert, est une survivance du passé. Pour tout dire, ça remonte à l'Amstrad PC1512 ! Il permettait de stocker une image en niveau de gris de façon rudimentaire, mais simple et facile à lire. Chaque pixel est codé sur un octet non signé. </p> <pre> En-tête: +--------+ | WIDTH | largeur sur 16 bits à-la-Intel +--------+ | HEIGHT | hauteur (idem) +--------+------+ | pppppppppp... | première ligne de pixels | pppppppppp... | deuxième... et ainsi de suite jusqu'à la fin de l'image </pre> <p> C'est donc un format 'monochrome', et on ne peut y mettre qu'une composante RGB, ou un canal alpha, ou n'importe quoi qui se code sur 8 bits. Vraiment rudimentaire, mais efficace sur un Amstrad PC 1512 :)<br> </p> <dl class="proto"> <dt>int Image_PHT_save_component(char *name, Image_Desc *i, char col); <dd>'name' est le nom du fichier, l'extension <b>.pht</b> est recommandée. </dl> <p class="HDP"><a href="#top">haut de page</a></p> <h2><a name="pnm">PNM</a></h2> <p> <b>PNM</b> est l'acronyme de <i>Portable Net Map</i>. Ce format est utilisé pour la communication entre une foultitude d'utilitaires de conversion de fichier images. Vous trouverez facilement de la doc dans le grand <a href="http://netpbm.sourceforge.net/doc/">Ternet</a>. </p> <dl class="proto"> <dt>int Image_wr_pbm_0(char *nom, Image_Desc *im, char channel); <dd>Sauvegarde d'une image monochrome, le seuil étant à 128. Le paramètre 'channel' est R,G,B ou A. <dt>int Image_wr_ppm_0(char *nom, Image_Desc *im, int mode); <dd> En théorie, le paramètre mode mis à 1 demande l'écriture d'un fichier binaire, plus petit, mais moins portable. En pratique, mode doit être mis à zéro, et on obtient un fichier ascii, qui peut être <b>très</b> gros. <dt>int Image_wr_pgm_0(char *nom, Image_Desc *im, char channel); <dd>Ecriture d'un fichier en niveau de gris du canal spécifié. </dl> <p> Vous pouvez aussi regarder <a href="img-povhf15.html#fonctions">les HF</a> pour une autre utilisation de ce format PNM. </p> <p class="HDP"><a href="#top">haut de page</a></p> <h2><a name="fits">FITS</a></h2> <p>FITS est un format utilisé en astronomie. Pour le moment, j'en suis à la recherche de documentation. Pour en savoir un peu plus, allez fouiller dans <a href="http://www.eso.org/eclipse/">Eclipse</a> et revenez me faire part de vos découvertes.</p> <p align=right><a href="#top">haut de page</a></p> <h2><a name="jpeg">JPEG</a></h2> <p> A la demande générale, j'ai rajouté un <i>hack bien crade</i> pour sauvegarder une image en jpeg. Mais il faut avoir l'utilitaire <b>cjpeg</b> sur votre système. </p> <dl class="proto"> <dt>int Image_system_cjpeg(Image_Desc *img, char *fname, int quality); <dd><i>img</i> est une image RGB en mémoire qui va être convertie en Jpeg sous le nom <i>fname</i> avec un facteur de qualité compris entre 0 et 100. Il suffira de taper <font color="green">man cjpeg</font> au prompt de votre shell favori pour en apprendre plus. </dl> <p> Attention, c'est vraiment un kludge, et ça risque de ne pas marcher à tous les coups... </p> <p class="HDP"><a href="#top">haut de page</a></p> <h2><a name="ptl">Points List</a></h2> <p> C'est nouveau, ça vient de sortir (enfin, il y a 8 ans que ce n'est <a href="img-ptlist.html">pas fini</a>). Et pour le moment, comme ça ne marche pas trop bien, ça ne sert à rien. En bref, ce sont des listes de points <i>(x,y,h,v)</i> qui seront destinées à nourrir un programme <a href="image77.html">fortran</a> qui fabriquera des <a href="img-povhf15.html">height fields</a>. </p> <p>Pour être honnête, je n'ai pas la moindre idée de l'endroit où se trouve ce fameux programme fortran. Pas grave, j'en ferais un autre. </p> <p class="HDP"><a href="#top">haut de page</a></p> <h2><a name="eps">Encapsulated Postscript</a></h2> <p> Le but premier est de construire des images utilisables par <tt>LaTeX</tt>, par exemple pour la version imprimée des <b>Sources de Tar</b>. La seconde étape sera de les utiliser dans des logiciels de PAO plus, ahem, institutionnels... </p> <p class="HDP"><a href="#top">haut de page</a></p> <h2><a name="liens">liens</a></h2> <p> L'habituelle rubrique des liens:<br> L'excellent <a href="http://www.wotsit.org/">wotsit</a> décrit pleins de formats de toutes sortes de fichiers. Il existe aussi un utilitaire d'<a href="img-outils.html#export">exportation</a> reprenant certains des formats décrits ici. D'autre part, <a href="http://www.imagemagick.org/">Image Magick</a> est une bonne solution à tous ces problèmes de formats de fichier pour les images. </p> <p class="footer"> vous pouvez me troller avec <a href="http://foo.bar.quux.over-blog.com/">vigueur</a><br> Si votre demande est simple, je patche à donf.<br> <a href="#top">haut de page</a></p> </body> </html>