Ouverture avec format simple :
function image(nom,mode,verif,lfmt)
character *80 nom
character *1 mode,verif
integer lfmt(9)
#include <inrimage/image.h>
struct image *image_(nom,mode,verif,lfmt)
char *nom, *mode, *verif; Fort_int lfmt[9];
Ouverture avec format étendu :
function imagex(nom,mode,verif,gfmt)
character *80 nom
character *1 mode,verif
integer gfmt(18)
#include <inrimage/image.h>
struct image *imagex_(nom,mode,verif,gfmt)
char *nom, *mode, *verif; struct nf_fmt *gfmt;
imagex réalise la même opération que image mais utilise un format étendu.
Le paramètre nom contient le nom de l'image, sauf si celui-ci commence par `?' auquel cas le nom de l'image est lu sur stdin après impression sur stderr du texte suivant le `?'.
Si le nom est "<", l'image sera lue sur stdin qui ne sera donc plus
utilisable pour des lectures interactives.
Si le nom est égal à ">", l'image sera écrite sur stdout.
Si le nom est précédé du caractère '>', le mode "s"
est forcé à "C" (voir ci-dessous).
Pour une image en lecture (mode "e"), si le nom a une
terminaison caractéristique (par exemple .Z ou .gz),
et si, dans certains cas, le fichier contient le bon
magic number, on ne fait pas une ouverture normale :
on exécute une commande sur le fichier et on récupère les
données dans un pipe.
Ce mécanisme relativement simple permet de lire une grande
variété de fichiers.
Dans le cas particulier d'images compressées, l'efficacité de la
commande gunzip rend l'opération presque
transparente.
Pour les détails sur la définition des conversions
voir Inrimage(1i)
.
Le paramètre mode est une chaine de 1 caractère pouvant valoir une des valeurs suivantes :
Le paramètre verif peut prendre les valeurs:
Si l'image n'existe pas, elle est créée avec les paramètres à vérifier et ceux lus en complément par rdfmg.
Dans tous les cas lfmt (ou gfmt) contient au retour le format de l'image ainsi ouverte.
En lecture (images existantes) le programme accepte les 4 types d'images Old, Inr3, Inrimage et Visilog, tels qu'ils sont définis dans Inrimage(1i) .
Si le nom d'image commence par >, le mode s est transformé en C (l'image est recréée).
En mode KHOROS le nom de fichier peut être précédé des préfixes file= (fichier normal) ou shm= (shared memory). Pour l'instant le préfixe shm= provoque une erreur fatale.
Il existe une variante du mode KHOROS dans lequel on force la réinitialisation des images en sortie : si la variable khoros_mode vaut 2 (option -khoros 1), le mode s est transformé en C.
(machine KSR pour l'instant) on initialise un verrou de type mutex_lock associé à la structure image créée.
Note : Dans le cas de création de l'image, on peut imposer une taille minimum pour l'en-tête : on placera cette valeur dans la variable globale IM_nbmin_hdr, l'unité étant le bloc de 256 octets. Cette variable est remise à zéro après chaque utilisation.