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>
|