libtthimage/Docs/html/img-fichiers.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>