Les images sont associées à de grandes quantités de données supplémentaires (métadonnées), au-delà des pixels réels de l'image. Ces métadonnées peuvent être utiles, que ce soit pour l'affichage, pour divers calculs, ou pour modifier le comportement d'opérations de traitement d'image ultérieures. Vous pouvez utiliser des échappements de pourcentage dans un certain nombre d'options, par exemple dans -format ou dans le -label de montage, pour afficher diverses propriétés et autres réglages associés à une image.
| Données de profil | Telles que les données EXIF:, contenant les distances focales, les expositions, les dates et, dans certains cas, les positions GPS. |
|---|---|
| Attributs | Ils sont directement liés aux données de l'image, et plus couramment modifiés dans le cadre du traitement d'image normal. Ils incluent la largeur, la hauteur, la profondeur, le type d'image (espace colorimétrique), les délais de temporisation et la couleur de fond. La plupart des échappements de pourcentage spécifiques servent à accéder à ces informations. |
| Propriétés | Elles sont stockées sous forme de table de chaînes de format libre et sont (si possible) enregistrées avec l'image (en particulier dans les formats de fichier image MIFF et PNG). Elles incluent : les étiquettes (Labels), les légendes (Captions), les commentaires (Comments). |
| Artefacts | Il s'agit de divers réglages opérationnels (experts) qui sont enregistrés pour être utilisés par divers opérateurs, ou par l'utilisateur pour un usage futur. C'est simplement une table de chaînes de format libre. Ils ne sont pas enregistrés avec l'image lors de l'écriture. Voir « Artefacts et options » ci-dessous pour les détails. |
| Options | Ce sont également des réglages opérationnels (experts) enregistrés pour être utilisés par divers opérateurs, mais définis globalement pour une liste d'images entière (et non enregistrés non plus). Voir « Artefacts et options » ci-dessous. |
Gestion des échappements de pourcentage
Si vous demandez un échappement de pourcentage tel que %[key], le réglage est recherché dans l'ordre suivant jusqu'à ce que la première correspondance soit trouvée…
- Traiter les préfixes spéciaux tels que 'artifact:', 'option:', 'exif:' ou 'fx:'. Cela inclut les calculs et les globs de ces préfixes, tels que 'exif:' ou 'artifact:' (voir ci-dessous).
- Si key contient un motif glob (mais aucun préfixe connu), rechercher dans la table des propriétés de format libre.
- Si key est un nom d'« attribut » d'image spécial (voir la liste ci-dessus), renvoyer l'attribut d'image associé ou calculé.
- Rechercher le réglage en tant que « propriété » de format libre.
- Rechercher le réglage en tant qu'« artefact » de format libre.
- Rechercher le réglage en tant qu'« option » de format libre.
- Remplacer l'échappement par une chaîne vide, et éventuellement produire un avertissement.
Notez que toutes les formes longues (long name) des échappements de pourcentage sont traitées sans tenir compte de la casse.
Vous pouvez désormais accéder directement aux tables de chaînes de format libre des artefacts et des options, ce qui vous permet de remplacer la séquence ci-dessus et d'éviter d'accéder à un attribut ou à une propriété portant le même nom.
%[artifact:setting]
%[option:setting]
La gestion des échappements nécessite l'accès à un conteneur d'image. Si aucun n'est disponible, une image vierge est créée pour garantir que l'expression peut être traitée et qu'une valeur peut être renvoyée. Par exemple, magick -print "%[fx:.8765/3.14]" null: null:.
Échappements de pourcentage d'attribut à une seule lettre
Voici les échappements courants à une seule lettre (forme courte) utilisés pour rapporter les attributs et propriétés les plus courants d'une image, tels que : le nom de fichier de l'image, le type, la largeur, la hauteur.
| \ | barre oblique inverse ; le caractère suivant est littéral et n'est pas soumis à interprétation |
|---|---|
| \n | saut de ligne |
| \r | retour chariot |
| < | caractère inférieur à. |
| > | caractère supérieur à. |
| & | caractère esperluette. |
| %% | un signe pourcentage |
| %b | taille de fichier de l'image lue (utiliser -precision 16 pour forcer les résultats en B) |
| %c | propriété de métadonnée comment |
| %d | composant répertoire du chemin |
| %e | extension ou suffixe du nom de fichier |
| %f | nom de fichier (suffixe inclus) |
| %g | géométrie de page du canevas de calque (équivalent à "%Wx%H%X%Y") |
| %h | hauteur actuelle de l'image en pixels |
| %i | nom de fichier de l'image (note : devient le nom de fichier de sortie pour "info:") |
| %k | CALCULÉ : nombre de couleurs uniques |
| %l | propriété de métadonnée label |
| %m | format de fichier image (file magic) |
| %n | nombre d'images dans la séquence d'images actuelle, rapporté une fois par image (frame) |
| %o | nom de fichier de sortie (utilisé pour les délégués) |
| %p | index de l'image dans la liste d'images actuelle |
| %q | profondeur de quantum (constante définie à la compilation) |
| %r | classe d'image et espace colorimétrique |
| %s | numéro de scène (issu de l'entrée sauf si réassigné) |
| %t | nom de fichier sans répertoire ni extension (suffixe) |
| %u | nom de fichier temporaire unique (utilisé pour les délégués) |
| %w | largeur actuelle en pixels |
| %x | résolution x (densité) |
| %y | résolution y (densité) |
| %z | profondeur de l'image (telle que lue sauf si modifiée, profondeur d'enregistrement de l'image) |
| %A | canal de transparence de l'image. Les valeurs incluent Undefined (aucun canal de transparence), Blend, Copy ou Update. |
| %B | taille de fichier de l'image lue en octets |
| %C | type de compression de l'image |
| %D | méthode de gestion (dispose) GIF de l'image |
| %G | taille d'image d'origine (%wx%h ; avant tout redimensionnement) |
| %H | hauteur de la page (canevas) |
| %M | nom de fichier Magick (fichier d'origine exactement tel que fourni, modificateurs de lecture inclus) |
| %N | nombre d'images dans la séquence d'images actuelle, rapporté une fois par séquence d'images |
| %O | décalage (offset) de la page (canevas) ( = %X%Y ) |
| %P | taille de la page (canevas) ( = %Wx%H ) |
| %Q | qualité de compression de l'image ( 0 = par défaut ) |
| %S | ?? scenes ?? |
| %T | délai temporel de l'image (en centièmes de seconde) |
| %U | unités de résolution de l'image |
| %W | largeur de la page (canevas) |
| %X | décalage x de la page (canevas) (signe inclus) |
| %Y | décalage y de la page (canevas) (signe inclus) |
| %Z | nom de fichier unique (utilisé pour les délégués) |
| %@ | CALCULÉ : boîte englobante de rognage (sans rogner réellement) |
| %# | CALCULÉ : hachage de « signature » des valeurs de l'image |
Voici un exemple de commande et sa sortie pour une image dont le nom de fichier est bird.miff, de largeur 512 et de hauteur 480.
-> identify -format "%m:%f %wx%h" bird.miff
MIFF:bird.miff 512x480
Notez que tous les échappements de pourcentage à une seule lettre peuvent aussi être utilisés sous forme longue (à partir de la version IM 6.7.6-9, voir ci-après). Par exemple, %[f] est équivalent à la forme courte %f.
AVERTISSEMENT : les échappements de pourcentage en forme courte ne sont PAS effectués lorsque le pourcentage suit un nombre. Par exemple, 10%x10 ne développe pas %x comme un échappement de pourcentage. Si vous voulez spécifiquement développer le 'x', utilisez la forme longue qui remplace ce cas spécial. Ex. : 10%[x]10.
Soyez également averti que les attributs calculés peuvent prendre un certain temps à générer, en particulier pour les grandes images.
Échappements de pourcentage d'attribut en forme longue
En plus des attributs spécifiques et calculés ci-dessus, les indications suivantes sont reconnues lorsqu'elles sont entourées d'accolades (forme longue) :
| %[basename] | nom de fichier de base, sans suffixes (comme %t) |
|---|---|
| %[bit-depth] | profondeur de bits réelle des données de pixel |
| %[bounding-box] | coins supérieur gauche et inférieur droit de la boîte englobante de l'image |
| %[caption] | propriété de métadonnée caption |
| %[caption:lines] | renvoie le nombre de lignes générées lors du retour à la ligne de la légende |
| %[caption:pointsize] | renvoie la taille en points calculée lors du traitement de caption: |
| %[channels] | mnémonique de l'espace colorimétrique suivi du nombre total de canaux et de méta-canaux, p. ex. cmyka 8.3 indique une image CMYK avec canal alpha pour un total de 8 canaux et 3 méta-canaux. |
| %[colors] | Nombre de couleurs uniques dans l'image (à partir de IM 7.0.3.8) |
| %[colorspace] | espace colorimétrique des données d'image (transparence exclue) |
| %[compose] | |
| %[compression] | type de compression de l'image |
| %[convex-hull] | points qui forment une enveloppe convexe autour de l'objet de premier plan. Utiliser -define convex-hull:background-color=color pour indiquer la couleur de fond de l'image. Utiliser -fuzz pour tolérer une couleur de fond non uniforme. |
| %[convex-hull:extreme-points] | renvoie les points extrêmes supérieur, droit, inférieur et gauche de l'enveloppe convexe. |
| %[copyright] | chaîne de copyright d'ImageMagick |
| %[depth] | profondeur de l'image pour l'écriture (telle que l'entrée sauf si modifiée) |
| %[deskew:angle] | angle de redressement (deskew) en degrés de rotation |
| %[directory] | partie répertoire du nom de fichier (comme %d) |
| %[distortion] | à quel point une image ressemble à une image de référence (-compare) |
| %[dominant-color] | renvoie la couleur dominante de l'image en hexadécimal. Faire précéder l'utilisation par -kmeans. |
| %[entropy] | CALCULÉ : entropie de l'image |
| %[extension] | partie extension du nom de fichier (comme %e) |
| %[gamma] | valeur de gamma de l'image |
| %[group] | ??? groupe de fenêtres ??? |
| %[height] | hauteur d'origine de l'image (au moment de sa lecture) |
| %[histogram:contrast-stretch] | pourcentages min et max calculés de l'étirement de contraste |
| %[histogram:linear-stretch] | pourcentages min et max calculés de l'étirement linéaire |
| %[input] | nom de fichier de l'image d'entrée. |
| %[interlace] | mode d'entrelacement de l'image (à partir de IM 7.0.3.8) |
| %[kurtosis] | CALCULÉ : statistique de kurtosis de l'image |
| %[label] | propriété de métadonnée label |
| %[label:pointsize] | renvoie la taille en points calculée lors du traitement de label: |
| %[magick] | codec (coder) utilisé pour lire l'image (et non le suffixe du fichier) |
| %[max] | CALCULÉ : statistique de valeur maximale de l'image |
| %[mean] | CALCULÉ : statistique de valeur moyenne de l'image |
| %[median] | CALCULÉ : statistique de valeur médiane de l'image |
| %[min] | CALCULÉ : statistique de valeur minimale de l'image |
| %[minimum-bounding-box] | Utiliser -define convex-hull:background-color=color pour indiquer la couleur de fond de l'image. Utiliser -fuzz pour tolérer une couleur de fond non uniforme. En plus des points de la boîte englobante, ces propriétés sont définies : minimum-bounding-box:area, minimum-bounding-box:width, minimum-bounding-box:height, minimum-bounding-box:angle et minimum-bounding-box:unrotate. |
| %[opaque] | CALCULÉ : l'image est-elle entièrement opaque ? |
| %[orientation] | orientation de l'image |
| %[page] | géométrie du canevas (page) virtuel |
| %[papersize:name] | taille de papier pour name en pixels à 72 DPI (p. ex. papersize:A4) |
| %[printsize.x] | taille d'impression X |
| %[printsize.y] | taille d'impression Y |
| %[profile:icc] | informations de profil ICC |
| %[profile:icm] | informations de profil ICM |
| %[profiles] | liste des éventuels profils intégrés |
| %[quality] | valeur de qualité de l'image (à partir de IM 7.0.3.8) |
| %[rendering-intent] | intention de rendu de l'image (à partir de IM 7.0.3.8) |
| %[resolution.x] | densité X (résolution) sans unités |
| %[resolution.y] | densité Y (résolution) sans unités |
| %[scene] | numéro de scène d'origine de l'image dans le fichier d'entrée |
| %[size] | taille d'origine de l'image (au moment de sa lecture) |
| %[skewness] | CALCULÉ : statistique d'asymétrie (skewness) de l'image |
| %[standard-deviation] | CALCULÉ : statistique d'écart-type de l'image |
| %[type] | CALCULÉ : type de l'image |
| %[unique] | nom de fichier temporaire unique ??? |
| %[units] | unités de résolution de l'image |
| %[version] | informations de version de cet ImageMagick en cours d'exécution |
| %[width] | largeur d'origine de l'image (au moment de sa lecture) |
| %[zero] | zéro (nom de fichier unique pour usage des délégués) |
Propriétés
Toutes les autres formes longues d'échappements de pourcentage (autres que la forme longue à une seule lettre) sont traitées sans tenir compte de la casse. De tels échappements tenteront de rechercher des sources de données spécifiques portant ce nom.
L'espace de recherche principal (s'il ne s'agit pas d'un attribut spécifique listé ci-dessus) est une chaîne de propriété de format libre. De telles chaînes sont associées et enregistrées avec les images, et sont généralement définies soit à l'aide de l'option CLI -set (ou de l'équivalent API), soit à partir d'options de commodité spéciales (telles que -label, -comment, -caption).
Ces options de commodité sont enregistrées globalement (en tant qu'« options globales », afin de pouvoir être définies avant la lecture des images), puis sont transférées vers la propriété des images individuelles, uniquement lorsqu'elles sont lues. À ce moment-là, tout échappement de pourcentage interne présent est alors traité.
Pour modifier une propriété d'une image déjà en mémoire, vous devez utiliser -set.
Notez que les propriétés, comme les attributs (et les profils), sont enregistrées avec les images lors de l'écriture, si le format de fichier image le permet.
Artefacts et options
Les échappements de pourcentage précédents sont associés aux attributs et propriétés principaux. C'est l'objet originel et principal de tels échappements de pourcentage.
Cependant, il existe de nombreux réglages opérationnels utilisés par divers opérateurs d'ImageMagick qu'il peut être utile de définir et de consulter ultérieurement. Ceux-ci se composent d'artefacts par image et d'options globales (associées à une liste d'images, généralement la liste d'images actuelle).
Notez que la principale différence entre un artefact et une propriété est qu'un artefact, étant un réglage opérationnel interne, n'est pas enregistré avec les images (lorsque cela est possible).
Par exemple, lorsque vous utilisez -define 'distort:viewport=100x100', vous générez en fait une option globale, que l'opérateur -distort utilisera pour modifier son comportement (la « vue » de l'image de sortie déformée).
Une option est essentiellement un artefact qui a été stocké globalement dans le cadre d'une liste d'images (plus précisément un « Wand » d'images). En tant que telles, elles sont identiques, en ce sens qu'une option est simplement un artefact global pour toutes les images associées.
Ainsi, vous pouvez utiliser -set 'option:distort:viewport' '100x100' pour obtenir le même résultat consistant à définir un artefact que l'opération distort utilisera.
Gestion interne d'une option globale…
La bibliothèque centrale ('MagickCore') ne comprend généralement pas directement les options globales. Ainsi, pour continuer l'exemple précédent, la fonction DistortImages() consulte uniquement un artefact pour déterminer si un 'viewport' lui a été fourni.
La manière dont les options globales sont utilisées lorsqu'une fonction de bibliothèque demande un artefact est l'une des principales différences entre IMv6 et IMv7.
Un lien retour vers les données d'options globales est établi, de sorte que si un artefact spécifique par image n'est pas trouvé, il recherchera directement une option globale équivalente pour cette liste d'images. Cela évite de copier ces options de format libre vers des artefacts de façon répétée, et signifie que vous pouvez désormais définir séparément une option globale pour une liste, et un artefact de remplacement individuel pour une image spécifique de cette liste.
Notez que de nombreuses API n'utilisent pas de Wands (PerlMagick par exemple utilise des tableaux d'images plutôt qu'un Wand). Dans ces API, vous n'aurez pas d'options globales, seulement des artefacts par image.
En résumé, une option globale, si elle est disponible, est équivalente à un artefact par image.
Énumération par motif glob des propriétés, artefacts et options
Le réglage peut contenir un motif glob. Vous pouvez ainsi désormais lister toutes les propriétés, artefacts et options de chaînes de format libre (mais pas les attributs d'image spécifiques) à l'aide de…
magick ... \
-print "__Properties__\n%[*]" \
-print "__Artifacts__\n%[artifact:*]" \
-print "__Options__\n%[option:*]" \
...
Le format des motifs glob est très spécifique ; il est donc généralement utilisé uniquement pour lister des réglages spécifiques, par exemple lors du débogage, plutôt que pour le traitement d'image.
Préfixes d'échappement de pourcentage calculés
Il existe certains préfixes spéciaux (avant le premier ':') qui effectuent des calculs basés sur la chaîne fournie par l'utilisateur après ce préfixe. Par exemple, vous pouvez effectuer un calcul numérique en utilisant %[fx:...] pour évaluer les expressions FX données :
%[fx:expression]
Utilisez pixel: ou hex: pour évaluer une couleur de pixel telle que définie par l'expression FX :
%[pixel:expression]
Utilisez -define pour spécifier la conformité de couleur (p. ex. -define pixel:compliance=css)
.
Préfixes d'échappement de pourcentage de profil spécifiques
Vous pouvez également utiliser la syntaxe de formatage spéciale suivante pour afficher les métadonnées d'image EXIF qui étaient incluses dans l'image lue :
%[EXIF:tag]
Choisissez tag parmi les suivants :
* (print all EXIF tags, in keyword=data format)
! (print all EXIF tags, in tag_number data format)
#hhhh (print data for EXIF tag #hhhh)
ImageWidth
ImageLength
BitsPerSample
Compression
PhotometricInterpretation
FillOrder
DocumentName
ImageDescription
Make
Model
StripOffsets
Orientation
SamplesPerPixel
RowsPerStrip
StripByteCounts
XResolution
YResolution
PlanarConfiguration
ResolutionUnit
TransferFunction
Software
DateTime
Artist
WhitePoint
PrimaryChromaticities
TransferRange
JPEGProc
JPEGInterchangeFormat
JPEGInterchangeFormatLength
YCbCrCoefficients
YCbCrSubSampling
YCbCrPositioning
ReferenceBlackWhite
CFARepeatPatternDim
CFAPattern
BatteryLevel
Copyright
ExposureTime
FNumber
IPTC/NAA
EXIFOffset
InterColorProfile
ExposureProgram
SpectralSensitivity
GPSInfo
ISOSpeedRatings
OECF
EXIFVersion
DateTimeOriginal
DateTimeDigitized
ComponentsConfiguration
CompressedBitsPerPixel
ShutterSpeedValue
ApertureValue
BrightnessValue
ExposureBiasValue
MaxApertureValue
SubjectDistance
MeteringMode
LightSource
Flash
FocalLength
MakerNote
UserComment
SubSecTime
SubSecTimeOriginal
SubSecTimeDigitized
FlashPixVersion
ColorSpace
EXIFImageWidth
EXIFImageLength
InteroperabilityOffset
FlashEnergy
SpatialFrequencyResponse
FocalPlaneXResolution
FocalPlaneYResolution
FocalPlaneResolutionUnit
SubjectLocation
ExposureIndex
SensingMethod
FileSource
SceneType
Entourez la spécification de format de guillemets pour empêcher votre shell d'interpréter à tort les espaces et les crochets.
La syntaxe de formatage spéciale suivante peut être utilisée pour afficher les informations IPTC contenues dans le fichier :
%[IPTC:dataset:record]
Sélectionnez dataset et record parmi les suivants :
Envelope Record
1:00 Model Version
1:05 Destination
1:20 File Format
1:22 File Format Version
1:30 Service Identifier
1:40 Envelope Number
1:50 Product ID
1:60 Envelope Priority
1:70 Date Sent
1:80 Time Sent
1:90 Coded Character Set
1:100 UNO (Unique Name of Object)
1:120 ARM Identifier
1:122 ARM Version
Application Record
2:00 Record Version
2:03 Object Type Reference
2:05 Object Name (Title)
2:07 Edit Status
2:08 Editorial Update
2:10 Urgency
2:12 Subject Reference
2:15 Category
2:20 Supplemental Category
2:22 Fixture Identifier
2:25 Keywords
2:26 Content Location Code
2:27 Content Location Name
2:30 Release Date
2:35 Release Time
2:37 Expiration Date
2:38 Expiration Time
2:40 Special Instructions
2:42 Action Advised
2:45 Reference Service
2:47 Reference Date
2:50 Reference Number
2:55 Date Created
2:60 Time Created
2:62 Digital Creation Date
2:63 Digital Creation Time
2:65 Originating Program
2:70 Program Version
2:75 Object Cycle
2:80 By-Line (Author)
2:85 By-Line Title (Author Position) [Not used in Photoshop 7]
2:90 City
2:92 Sub-Location
2:95 Province/State
2:100 Country/Primary Location Code
2:101 Country/Primary Location Name
2:103 Original Transmission Reference
2:105 Headline
2:110 Credit
2:115 Source
2:116 Copyright Notice
2:118 Contact
2:120 Caption/Abstract
2:122 Caption Writer/Editor
2:125 Rasterized Caption
2:130 Image Type
2:131 Image Orientation
2:135 Language Identifier
2:150 Audio Type
2:151 Audio Sampling Rate
2:152 Audio Sampling Resolution
2:153 Audio Duration
2:154 Audio Outcue
2:200 ObjectData Preview File Format
2:201 ObjectData Preview File Format Version
2:202 ObjectData Preview Data
Pre-ObjectData Descriptor Record
7:10 Size Mode
7:20 Max Subfile Size
7:90 ObjectData Size Announced
7:95 Maximum ObjectData Size
ObjectData Record
8:10 Subfile
Post ObjectData Descriptor Record
9:10 Confirmed ObjectData Size