IMAGE (3I)     version 4.6.9     March 2022

User Intro    Prog Intro    Liste des programmes    Liste des manuels
Table of Contents


NAME

image, imagex - ouverture d'une image

SYNOPSIS

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;

DESCRIPTION

image ouvre une image et renvoie un pointeur sur la structure image correspondante. Cette fonction utilise spécifiquement un format simple.

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 :

"e"
(entrée) l'image doit alors exister.
"s"
(sortie) si l'image n'existe pas, elle est créée.
"c"
(création) si l'image existe, elle est détruite avant d'être créée selon le format gfmt ou lfmt (le paramètre verif est ignoré et forcé à "a" ou "ax" selon qu'on a "c" ou "cx").
"C"
(création avec format incomplet) si l'image existe elle est détruite avant d'être créée selon le format gfmt ou lfmt. Le paramètre verif sert à déterminer quelle partie du format sera fouyrnie par les options ou demandée en interactif.
"t"
(temporaire) on crée une image temporaire avec mktemp(3).

Le paramètre verif peut prendre les valeurs:

"d"
(dimensions) les dimensions contenues dans lfmt sont comparées à celles de l'image si celle-ci existe.
"dx"
(dimensions et offsets) les dimensions, le type de maille et les origines en X,Y,Z, contenues dans gfmt sont comparées à celles de l'image si celle-ci existe.
"t"
(type) le type et le codage contenus dans lfmt sont comparés à ceux de l'image si celle-ci existe.
"tx"
(type étendu) le type, le codage, ainsi que le biais et le facteur d'échelle dans le cas d'un codage en virgule fixe, contenus dans gfmt sont comparés à ceux de l'image si celle-ci existe.
"a"
(all) le format complet contenu dans lfmt est comparé à celui de l'image si celle-ci existe.
"ax"
(all étendu) le format complet contenu dans gfmt est comparé à celui de l'image si celle-ci existe.
" "
(rien) pas de vérification du format si l'image existe.

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.

SEE ALSO

Intro(3i) pour la description d'une image.
rdfmg(3i)
Inrimage(1i)

BACKWARD COMPATIBILITY

Depuis Inrimage 4.6.2, le second caractère du paramètre mode n'est plus vérifié (il pouvait valoir "x") : en effet, on fait maintenant explicitement la distinction entre le format simple (fonction image) et le format étendu (fonction imagex). Si on essaye d'utiliser image en format étendu (avec mode=" x"), une erreur 9 est retournée.

DIAGNOSTICS

image appelle imerror en cas d'erreur.