photo

 

photo - Images en couleur


SYNTAXE

 image create photo ?NOM? ?options?

DESCRIPTION


Une photo est une image dont les pixels peuvent afficher n'importe quelle couleur ou être transparents. Une image photo est stockée en interne en couleurs vraies (32 bits par pixel), et est affichée en utilisant le dithering si nécessaire. Les données d'une image photo peuvent être obtenues à partir d'un fichier ou d'une chaîne, ou peuvent être fournies à partir de code C au travers d'une interface procédurale. A présent, seuls les formats GIF et PPM/PGM sont supportée, mais une interface existe pour permettre l'ajout de formats de fichier image supplémentaires facilement. Une image photo est transparente dans les zones où aucunes données n'ont été fournies.


CREATION DE PHOTOS


Comme toutes les images, les photos sont créées en utilisant la commande image. Les photos supportent les options suivantes:

-data chaîne Spécifie le contenu de l'image comme une chaîne. La chaîne peut contenir des données encodées base64 ou binaires. Le format de la chaîne doit être un de ceux pour lesquels il y a un gestionnaire de format de fichier image qui accepte les données de la chaîne. Si les options -data et -file sont spécifiées, l' option -file prend la précédence.

-format format-nom Spécifie le nom du format de fichier des données spécifié avec l'option -data ou -file .

-file NOM NOM donne le nom d'un fichier qui sera lu pour fournir les données d'une image photo. le format de fichier doit être un de ceux pour lesquels il y a un gestionnaire de format de fichier image qui saura lire les données.

-gamma valeur Spécifie que les couleurs allouées pour l'affichage de cette image dans une fenêtre doivent être corrigées pour un affichage non linéaire avec la valeur d'exposant gamma spécifiée. (L'intensité produite par la plupart des écrans cathodiques est à peu près une fonction exponentielle de la valeur du signal d'entrée; gamma est l'exposant et est généralement autour de 2). La valeur spécifiée doit être supérieure à zéro. La valeur par défaut est un (pas de correction). En général, les valeurs supérieures à un rendront l'image plus claire, et les valeurs inférieures à un la rendront plus sombre.

-height nombre Spécifie la hauteur de l'image, en pixels. Cette option est utile principalement dans les situations où l'utilisateur souhaite construire le contenu de l'image pièce par pièce. Une valeur de zéro (par défaut) permet à l'image d'être étendue ou réduite verticalement pour s'adapter aux données qu'elle contient.

-palette palette-spec Spécifie la résolution du cube de couleurs à allouer pour l'affichage de cette image, et donc le nombre de couleurs utilisées sur celles disponibles dans les fenêtres où elle est affichée. La chaîne palette-spec peut être soit un seul nombre décimal, soit la spécification du nombre de nuances de gris à utiliser, ou trois nombres décimaux séparés par des slashes (/), soit la spécification le nombre de nuances de rouge, vert et bleu à utiliser. Si la première forme (un seul nombre) est utilisée, l'image sera affichée en monochrome (c.a.d., en nuances de gris).

-width nombre Spécifie la largeur de l'image, en pixels. Cette option est utile principalement dans les situations où l'utilisateur souhaite construire le contenu de l'image pièce par pièce. Une valeur de zéro (par défaut) permet à l'image d'être étendue ou réduite horizontalement pour s'adapter aux données qu'elle contient.


IMAGE COMMAND


Quand une image photo est créée, Tk crée également une nouvelle commande du même nom que l'image. cette commande peut être utilisée pour effectuer diverses opérations sur l'image. Elle a la forme générale suivante:

 ''imageName option ''?''arg arg ...''?

Option et args déterminent le comportement exact de la commande.

Ces options qui écrivent les données vers l'image agrandissent généralement la taille de l'image, si nécessaire, pour s'adapter aux données écrites, à moins que l'utilisateur ait spécifié des valeurs non-nulles pour les options de configuration -width et/ou -height , auquel cas la largeur et/ou la hauteur, respectivement, de l'image ne sera pas modifiée.

Les commandes suivantes sont possibles pour les images photo:

imageName blank Efface l'image; vide entièrement l'image de ses données, elle sera ainsi affichée transparente, et l'arrière-plan de la fenêtre sur laquelle elle est affichée deviendra visible.

imageName cget option Retourne la valeur courante de l'option de configuration indiquée par option. Option peut prendre n'importe quelle des valeurs acceptées par la commande image create photo.

imageName configure ?option? ?valeur option valeur ...? Interroge ou modifie les options de configuration de l'image. Si aucune option n'est spécifiée, retourne une liste décrivant toutes les options disponibles de imageName (voir ConfigWidg pour information sur le format de cette liste). Si option est spécifiée sans valeur, alors la commande retourne une liste décrivant l'option indiquée (cette liste sera identique à la correspondante sous-liste de la valeur retournée si aucune option n'est spécifiée). Si un ou plusieurs paires option-valeur sont spécifiées, alors la commande donne à l'option(s)la valeur(s) indiquée; dans ce cas la commande retourne une chaîne vide. Option peut prendre n'importe quelle des valeurs acceptées par la commande image create photo.

imageName copy sourceImage ?option valeur(s) ...? Copie une partie de l'image appelée sourceImage (qui doit être une image photo) vers l'image appelée imageName, probablement avec pixellisation et/ou perte de qualité. Si aucunes options ne sont spécifiées, cette commande copie la totalité de sourceImage dans imageName, commençant aux coordonnées (0,0) dans imageName. Les options suivantes peuvent être spécifiée:

-from x1 y1 x2 y2 Spécifie une zone rectangulaire de l'image source à copier. (x1,y1) et (x2,y2) indiquent les coins diagonalement opposés du rectangle. Si x2 et y2 ne sont pas spécifiés, la valeur par défaut est coin inférieur droit de l'image source. Les pixels copiés incluront les extrémités gauche et supérieure du rectangle spécifié mais pas l'extrémité droite ni l'inférieure. Si l'option -from n'est pas fournie, l'image source sera copiée entièrement par défaut.

-to x1 y1 x2 y2 Spécifie une zone rectangulaire de l'image destination. (x1,y1) et (x2,y2) indiquent les coins diagonalement opposés du rectangle. Si x2 et y2 ne sont pas spécifiés, la valeur par défaut est (x1,y1) plus la taille de la zone source (après subsampling et zooming, si spécifié). Si x2 et y2 sont spécifiés, la zone source sera répliquée si nécessaire pour remplir la zone destination avec un aspect tuilé.

-shrink Spécifie que la taille de l'image destination doit être réduite, si nécessaire, ainsi la partie copiée le sera dans le coin inférieur droit de l'image. Cette option n'affectera pas la largeur ou hauteur de l'image si l'utilisateur a indiqué une valeur non-nulle pour les options de configuration -width ou -height, respectivement.

-zoom x y Spécifie que la zone source doit être magnifiée d'un facteur de x dans la direction X et y dans la direction Y. Si y n'est pas donné, la valeur par défaut est la même que x. Avec cette option, chaque pixel de l'image source sera étendu dans un bloc de x x y pixels de l'image destination, tous de même couleur. x et y doit être supérieur à 0.

-subsample x y Spécifie que l'image source doit être réduite en utilisant seulement chaque xième pixel dans la direction X et yième pixel dans la direction Y. Les valeurs négatives provoqueront le retournement de l'image autour des axes Y ou X, respectivement. Si y n'est pas donné, la valeur par défaut est la même que x.

imageName data ?option valeur(s) ...? Retourne les données de l'image sous la forme d'une chaîne. Les options suivantes peuvent être spécifiées:

-background color Si une couleur est spécifiée, les données ne contiendront aucune information de transparence. Dans tous les pixels transparents, la couleur sera remplacée par la couleur indiquée.

-format format-nom Spécifie le nom du gestionnaire de format de fichier image à utiliser. Spécifiquement, cette sous-commande recherche le premier gestionnaire dont le nom correspond à la chaîne format-nom et qui a la capacité de lire les données de cette image. Si cette option n'est pas indiquée, cette sous-commande utilise le premier gestionnaire qui a la capacité de lire les données de cette image.

-from x1 y1 x2 y2 Spécifie une zone rectangulaire de l'image imageName qui sera retournée. Si seulement x1 et y1 sont spécifiés, la zone est étendue de (x1,y1) jusqu'au coin inférieur droit de imageName. Si les quatre coordonnées sont indiquées, elles spécifient les coins diagonalement opposés de la zone, incluant x1,y1 et excluant x2,y2. Le comportement par défaut, si cette option n'est pas donné, est l'image entière.

-grayscale Si cette option est spécifiée, les données ne contiendront pas d'information de couleur . Toutes les données des pixels seront transformées en nuances de gris.

imageName get x y Retourne la couleur du pixel aux coordonnées (x,y) dans l'image comme une liste de trois entiers entre 0 et 255, qui représentent respectivement les composantes rouges, verte et bleues.

imageName put données ?option valeur(s) ...? Fixe les pixels de imageName aux données spécifiées dans données. cette commande cherche d'abord dans la liste des gestionnaires de format d'image un gestionnaire qui saura interpréter les données dans données, et ensuite lit l'image de filename dans imageName (l'image destination). Les options suivantes peuvent être spécifiées:

-format format-nom Spécifie le format des données de l'image dansdonnées. Spécifiquement, seuls les gestionnaires de format de fichier image dont les noms commencent avec format-nom seront utilisés pendant la recherche.

-from x1 y1 x2 y2 Spécifie une zone rectangulaire des données du fichier image à retourner. Si seulement x1 et y1 sont spécifiés, la zone est étendue de (x1,y1) jusqu'au coin inférieur droit de l'image dans le fichier image. Si les quatre coordonnées sont spécifiées, elles indiquent les coins diagonalement opposés de la zone. Le défaut, si cette option n'est pas spécifiée, est l'image entière.

-shrink Si cette option est indiquée, la taille de imageName sera réduite, si nécessaire, ainsi la zone dans laquelle les données du fichier image sont lues est le coin inférieur droit de imageName. Cette option n'affectera pas la largeur ou hauteur de l'image si l'utilisateur a indiqué une valeur non-nulle pour les options de configuration -width ou -height, respectivement.

-to x y Spécifie les coordonnées du coin supérieur gauche de la zone de imageName dans laquelle les données de filename sont lues. La valeur par défaut est (0,0).

imageName read filename ?option valeur(s) ...? Lit les données de l'image à partir du fichier nommé filename dans l'image. cette commande cherche d'abord dans la liste des gestionnaires de format de fichier image un gestionnaire qui sait interpréter les données de filename, et alors lit l'image de filename dans imageName (l'image destination). Les options suivantes peuvent être indiquées:

-format format-nom Spécifie le format des données de l'image dansdonnées. Spécifiquement, seuls les gestionnaires de format de fichier image dont les noms commencent avec format-nom seront utilisés pendant la recherche.

-from x1 y1 x2 y2 Spécifie une zone rectangulaire des données du fichier image à retourner. Si seulement x1 et y1 sont spécifiés, la zone est étendue de (x1,y1) jusqu'au coin inférieur droit de l'image dans le fichier image. Si les quatre coordonnées sont spécifiées, elles indiquent les coins diagonalement opposés de la zone. Le défaut, si cette option n'est pas spécifiée, est l'image entière.

-shrink Si cette option, la taille of imageName sera réduite, si nécessaire, ainsi la zone dans laquelle les données du fichier image sont lues est au coin inférieur droit de imageName. Cette option n'affectera pas la largeur ou hauteur de l'image si l'utilisateur a indiqué une valeur non-nulle pour les options de configuration -width ou -height, respectivement.

-to x y Spécifie les coordonnées du coin supérieur gauche de la partie de imageName dans laquelle les données de filename sont lues. La valeur par défaut est (0,0).

imageName redither L'algorithme de diffusion utilisé pour l'affichage d'images photo propage des erreurs de quantification d'un pixel à ses voisins. Si les données de l'image pour imageName sont fournies en plusieurs parties, l'image diffusée peut ne pas être exactement correcte. Normalement la différence n'est pas notable, mais s'il y a un problème, cette commande peut être utilisée pour recalculer l'image diffusée dans chaque fenêtre où elle est affichée.

imageName write filename ?option valeur(s) ...? Ecrit les données de l'image de imageName vers un fichier nommé filename. Les options suivantes peuvent être spécifiées:

-background color Si une couleur est spécifiée, les données ne contiendront aucune information de transparence. Dans tous les pixels transparents, la couleur sera remplacée par la couleur indiquée.

-format format-nom Spécifie le nom du gestionnaire de format de fichier image à utiliser. Spécifiquement, cette sous-commande recherche le premier gestionnaire dont le nom correspond à la chaîne format-nom et qui a la capacité d’écrire les données de cette image. Si cette option n'est pas indiquée, cette sous-commande utilise le premier gestionnaire qui a la capacité d’écrire les données de cette image.

-from x1 y1 x2 y2 Spécifie une zone rectangulaire de imageName à écrire dans le fichier image. Si seulement x1 et y1 sont spécifiés, la zone est étendue de (x1,y1) jusqu'au coin inférieur droit de imageName. Si les quatre coordonnées sont indiquées, elles spécifient les coins diagonalement opposés corners de la zone rectangulaire. Le défaut, si cette option n'est pas donnée, est l'image entière.

-grayscale Si cette options est spécifiée, les données ne contiendront pas d'information de couleur. Toutes les données des pixels seront transformées en niveaux de gris.


FORMATS D'IMAGE


Le code de l'image photo est structuré pour permettre un ajout facile de gestionnaires formats de fichier image supplémentaires. Le code de l'image photo maintient une liste de ces gestionnaires. Les gestionnaires sont ajoutés à la liste en les enregistrant avec un appel à CrtPhImgFmt. Les distributions Tk standard sont livrées avec des gestionnaires pour les formats PPM/PGM et GIF, qui sont automatiquement enregistrés à l'initialisation.

Quand il lit un fichier image ou qu'il traite une chaîne de données spécifiée avec l' option de configuration-data , le code de l'image photo appelle chaque gestionnaire jusqu'à ce qu'un soit trouvé qui est capable de lire les données dans le fichier ou la chaîne. Usuellement ceci localise le gestionnaire correct, mais si non, l'utilisateur peut fournir un nom de format avec l'option -format pour spécifier quel gestionnaire utiliser. En fait le code de l'image photo essayera les gestionnaires dont le noms commence par la chaîne spécifiée par l'option -format (la comparaison est insensible à la casse). Par exemple, si l'utilisateur indique -format gif, alors un gestionnaire nommé GIF87 ou GIF89 peut être appelé, mais un gestionnaire nommé JPEG non (en supposant qu'un tel gestionnaire ait été enregistré).

A l'ecriture des données image vers un fichier, le traitement de l'option -format est légèrement différent: la valeur chaîne transmise à l'option -format doit commencer avec le nom complet du gestionnaire demandé, et peut contenir des information supplémentaires ensuite, que le gestionnaire peut utiliser, par exemple, pour spécifier quelle variante utiliser du format supporté.


ALLOCATION DE COULEURS


Quand une image photo est affichée dans une fenêtre, le code de l'image photo alloue les couleurs à utiliser pour afficher l'image et diffuse l'image, si nécessaire, pour afficher une approximation convenable de l'image en utilisant les couleurs disponibles. Les couleurs sont allouées comme un cube de couleur , c'est à dire que le nombre de couleurs allouées est le produit du nombre de nuances de rouge, vert et bleu.

Normalement, le nombre de couleurs allouées est choisi en partant de la profondeur de la fenêtre. Par exemple, dans une fenêtre 8-bit PseudoColor, le code image photo tentera d'allouer sept nuances de rouge, sept nuances de vert et quatre nuances de bleu, sur un total de 198 couleurs. Dans une fenêtre 1-bit StaticGray (monochrome), il allouera deux couleurs, noir et blanc. Dans une fenêtre 24-bit DirectColor ou TrueColor, il allouera 256 nuances de rouge, vert et bleu. Heureusement, à cause de la façon dont les valeurs des pixels peuvent être combinées dans les fenêtres DirectColor et TrueColor, ceci demande l'allocation de seulement 256 couleurs. Si toutes les couleurs ne peuvent être allouées, le code image photo réduit le nombre de nuances de chaque couleur primaire et réessaye.

L'utilisateur peut exercer un contrôle sur le nombre de couleurs qu'une image photo utilise avec l'option de configuration -palette. Si cette option est utilisée, elle indique le nombre maximum de nuances de chaque couleur primaire à tenter d'allouer. Elle peut être aussi utilisée pour forcer l'image à être affichée en nuances de gris, même sur un écran couleur, en donnant un seul chiffre plutôt que trois nombres séparés par des barres obliques.


CRÉDITS


Le type image photo a été conçu et implémenté par Paul Mackerras, en se basant sur un widget photo précédent et quelques suggestions de John Ousterhout.


Traduit par Michel Salvagniac 2002-2003

Copyright © 2003 - Le Wiki Tcl/Tk Francophone.


Catégorie Manuel Tcl/Tk