263 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			263 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <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>
 | 
