Las imágenes llevan asociada una cantidad considerable de datos adicionales (metadatos), más allá de los píxeles propios de la imagen. Estos metadatos pueden ser útiles, ya sea para mostrarlos, para diversos cálculos o para modificar el comportamiento de operaciones de procesamiento de imágenes posteriores. Puede utilizar escapes de porcentaje en varias opciones, por ejemplo en -format o en el -label de montage, para imprimir distintas propiedades y otros ajustes asociados a una imagen.
| Datos de perfil | Como los datos EXIF:, que contienen distancias focales, exposiciones, fechas y, en algunos casos, ubicaciones GPS. |
|---|---|
| Atributos | Están directamente relacionados con los datos de la imagen y se modifican más comúnmente como parte del procesamiento normal de imágenes. Incluyen ancho, alto, profundidad, tipo de imagen (espacio de color), retardos de temporización y color de fondo. La mayoría de los escapes de porcentaje específicos sirven para acceder a esta información. |
| Propiedades | Se almacenan como una tabla de cadenas de texto libre y se guardan (si es posible) con la imagen (especialmente en los formatos de archivo de imagen MIFF y PNG). Incluyen: etiquetas (Labels), leyendas (Captions) y comentarios (Comments). |
| Artefactos | Son diversos ajustes operativos (avanzados) que se guardan para que los usen varios operadores, o que el usuario guarda para un uso futuro. Es simplemente una tabla de cadenas de texto libre. No se guardan con la imagen al escribirla. Consulte «Artefactos y opciones» más abajo para más detalles. |
| Opciones | También son ajustes operativos (avanzados) que se guardan para que los usen varios operadores, pero se establecen de forma global para toda una lista de imágenes (tampoco se guardan). Consulte «Artefactos y opciones» más abajo. |
Manejo de escapes de porcentaje
Si solicita un escape de porcentaje como %[key], el ajuste se busca en el siguiente orden hasta encontrar la primera coincidencia…
- Se manejan los prefijos especiales como 'artifact:', 'option:', 'exif:' o 'fx:'. Esto incluye los cálculos y los globs de esos prefijos, como 'exif:' o 'artifact:' (véase más abajo).
- Si key contiene un patrón glob (pero ningún prefijo conocido), se busca en la tabla de propiedades de texto libre.
- Si key es el nombre de un «atributo» de imagen especial (véase la lista anterior), se devuelve el atributo de imagen asociado o calculado.
- Se busca el ajuste como una «propiedad» de texto libre.
- Se busca el ajuste como un «artefacto» de texto libre.
- Se busca el ajuste como una «opción» de texto libre.
- Se reemplaza el escape por una cadena vacía y, en su caso, se produce una advertencia.
Recuerde que todas las formas de nombre largo de los escapes de porcentaje se manejan sin distinguir entre mayúsculas y minúsculas.
Ahora puede acceder directamente a las tablas de cadenas de texto libre de artefactos y opciones, lo que le permite anular la secuencia anterior y evitar acceder a un atributo o propiedad con el mismo nombre.
%[artifact:setting]
%[option:setting]
El manejo de los escapes requiere acceso a un contenedor de imagen. Si no hay ninguno disponible, se crea una imagen en blanco para garantizar que la expresión pueda procesarse y devolver un valor. Por ejemplo, magick -print "%[fx:.8765/3.14]" null: null:.
Escapes de porcentaje de atributos de una sola letra
A continuación se muestran los escapes comunes de una sola letra (forma corta) que se usan para informar de los atributos y propiedades más comunes de una imagen, como: el nombre del archivo de la imagen, el tipo, el ancho y el alto.
| \ | barra invertida; el siguiente carácter es literal y no se interpreta |
|---|---|
| \n | nueva línea |
| \r | retorno de carro |
| < | carácter menor que. |
| > | carácter mayor que. |
| & | carácter ampersand. |
| %% | un signo de porcentaje |
| %b | tamaño del archivo de la imagen leída (use -precision 16 para forzar los resultados en B) |
| %c | propiedad de metadatos comment |
| %d | componente de directorio de la ruta |
| %e | extensión o sufijo del nombre del archivo |
| %f | nombre del archivo (incluido el sufijo) |
| %g | geometría de página del lienzo de la capa (equivalente a "%Wx%H%X%Y") |
| %h | alto actual de la imagen en píxeles |
| %i | nombre del archivo de la imagen (nota: pasa a ser el nombre del archivo de salida para "info:") |
| %k | CALCULADO: número de colores únicos |
| %l | propiedad de metadatos label |
| %m | formato del archivo de imagen (file magic) |
| %n | número de imágenes en la secuencia de imágenes actual, se informa una vez por fotograma |
| %o | nombre del archivo de salida (usado para los delegados) |
| %p | índice de la imagen en la lista de imágenes actual |
| %q | profundidad de cuanto (constante de tiempo de compilación) |
| %r | clase de la imagen y espacio de color |
| %s | número de escena (del origen salvo que se reasigne) |
| %t | nombre del archivo sin directorio ni extensión (sufijo) |
| %u | nombre de archivo temporal único (usado para los delegados) |
| %w | ancho actual en píxeles |
| %x | resolución x (densidad) |
| %y | resolución y (densidad) |
| %z | profundidad de la imagen (la de lectura salvo que se modifique; profundidad de guardado de la imagen) |
| %A | canal de transparencia de la imagen. Los valores incluyen Undefined (sin canal de transparencia), Blend, Copy o Update. |
| %B | tamaño del archivo de la imagen leída en bytes |
| %C | tipo de compresión de la imagen |
| %D | método de descarte GIF de la imagen |
| %G | tamaño original de la imagen (%wx%h; antes de cualquier redimensionamiento) |
| %H | alto de la página (lienzo) |
| %M | nombre de archivo Magick (archivo original exactamente como se indicó, incluidas las modificaciones de lectura) |
| %N | número de imágenes en la secuencia de imágenes actual, se informa una vez por secuencia de imágenes |
| %O | desplazamiento de la página (lienzo) ( = %X%Y ) |
| %P | tamaño de la página (lienzo) ( = %Wx%H ) |
| %Q | calidad de compresión de la imagen ( 0 = predeterminado ) |
| %S | ?? escenas ?? |
| %T | retardo de tiempo de la imagen (en centisegundos) |
| %U | unidades de resolución de la imagen |
| %W | ancho de la página (lienzo) |
| %X | desplazamiento x de la página (lienzo) (incluido el signo) |
| %Y | desplazamiento y de la página (lienzo) (incluido el signo) |
| %Z | nombre de archivo único (usado para los delegados) |
| %@ | CALCULADO: cuadro delimitador de recorte (sin recortar realmente) |
| %# | CALCULADO: hash de «firma» de los valores de la imagen |
Este es un comando de ejemplo y su salida para una imagen con el nombre de archivo bird.miff y cuyo ancho es 512 y alto es 480.
-> identify -format "%m:%f %wx%h" bird.miff
MIFF:bird.miff 512x480
Tenga en cuenta que todos los escapes de porcentaje de una sola letra también pueden usarse en su forma larga (desde la versión 6.7.6-9 de IM, véase a continuación). Por ejemplo, %[f] es equivalente a la forma corta %f.
ADVERTENCIA: los escapes de porcentaje de forma corta NO se realizan cuando el porcentaje va después de un número. Por ejemplo, 10%x10 no expande el %x como escape de porcentaje. Si específicamente desea expandir la 'x', use la forma larga, que anula este caso especial. Por ejemplo: 10%[x]10.
Tenga también en cuenta que los atributos calculados pueden tardar algún tiempo en generarse, especialmente en imágenes grandes.
Escapes de porcentaje de atributos de forma larga
Además de los atributos específicos y calculados anteriores, también se reconocen los siguientes cuando se encierran entre llaves (forma larga):
| %[basename] | nombre de archivo base, sin sufijos (como %t) |
|---|---|
| %[bit-depth] | profundidad de bits real de los datos de píxeles |
| %[bounding-box] | esquinas superior izquierda e inferior derecha del cuadro delimitador de la imagen |
| %[caption] | propiedad de metadatos caption |
| %[caption:lines] | devuelve el número de líneas generadas al ajustar la leyenda |
| %[caption:pointsize] | devuelve el tamaño de punto calculado durante el procesamiento de caption: |
| %[channels] | mnemónico del espacio de color seguido del número total de canales y metacanales; p. ej., cmyka 8.3 indica una imagen CMYK con canal alfa para un total de 8 canales y 3 metacanales. |
| %[colors] | número de colores únicos en la imagen (a partir de IM 7.0.3.8) |
| %[colorspace] | espacio de color de los datos de la imagen (excluida la transparencia) |
| %[compose] | |
| %[compression] | tipo de compresión de la imagen |
| %[convex-hull] | puntos que forman una envolvente convexa alrededor del objeto en primer plano. Use -define convex-hull:background-color=color para identificar el color de fondo de la imagen. Use -fuzz para tener en cuenta un color de fondo no uniforme. |
| %[convex-hull:extreme-points] | devuelve los puntos extremos superior, derecho, inferior e izquierdo de la envolvente convexa. |
| %[copyright] | cadena de copyright de ImageMagick |
| %[depth] | profundidad de la imagen para la escritura (la de entrada salvo que se cambie) |
| %[deskew:angle] | el ángulo de corrección de inclinación en grados de rotación |
| %[directory] | parte de directorio del nombre del archivo (como %d) |
| %[distortion] | cuánto se parece una imagen a una imagen de referencia (-compare) |
| %[dominant-color] | devuelve el color dominante de la imagen en hexadecimal. Preceda su uso con -kmeans. |
| %[entropy] | CALCULADO: entropía de la imagen |
| %[extension] | parte de extensión del nombre del archivo (como %e) |
| %[gamma] | valor de la gamma de la imagen |
| %[group] | ??? grupo de ventanas ??? |
| %[height] | alto original de la imagen (cuando se leyó) |
| %[histogram:contrast-stretch] | porcentajes mínimo y máximo de estiramiento de contraste calculados |
| %[histogram:linear-stretch] | porcentajes mínimo y máximo de estiramiento lineal calculados |
| %[input] | el nombre del archivo de la imagen de entrada. |
| %[interlace] | modo de entrelazado de la imagen (a partir de IM 7.0.3.8) |
| %[kurtosis] | CALCULADO: estadístico de curtosis de la imagen |
| %[label] | propiedad de metadatos label |
| %[label:pointsize] | devuelve el tamaño de punto calculado durante el procesamiento de label: |
| %[magick] | codificador (coder) usado para leer la imagen (no el sufijo del archivo) |
| %[max] | CALCULADO: estadístico de valor máximo de la imagen |
| %[mean] | CALCULADO: estadístico de valor medio de la imagen |
| %[median] | CALCULADO: estadístico de valor mediano de la imagen |
| %[min] | CALCULADO: estadístico de valor mínimo de la imagen |
| %[minimum-bounding-box] | Use -define convex-hull:background-color=color para identificar el color de fondo de la imagen. Use -fuzz para tener en cuenta un color de fondo no uniforme. Además de los puntos del cuadro delimitador, se establecen estas propiedades: minimum-bounding-box:area, minimum-bounding-box:width, minimum-bounding-box:height, minimum-bounding-box:angle y minimum-bounding-box:unrotate. |
| %[opaque] | CALCULADO: ¿es la imagen totalmente opaca? |
| %[orientation] | orientación de la imagen |
| %[page] | geometría del lienzo virtual (página) |
| %[papersize:name] | tamaño de papel para name en píxeles a 72DPI (p. ej. papersize:A4) |
| %[printsize.x] | tamaño de impresión X |
| %[printsize.y] | tamaño de impresión Y |
| %[profile:icc] | información del perfil ICC |
| %[profile:icm] | información del perfil ICM |
| %[profiles] | lista de los perfiles incrustados, si los hay |
| %[quality] | valor de calidad de la imagen (a partir de IM 7.0.3.8) |
| %[rendering-intent] | intento de renderizado de la imagen (a partir de IM 7.0.3.8) |
| %[resolution.x] | densidad X (resolución) sin unidades |
| %[resolution.y] | densidad Y (resolución) sin unidades |
| %[scene] | número de escena original de la imagen en el archivo de entrada |
| %[size] | tamaño original de la imagen (cuando se leyó) |
| %[skewness] | CALCULADO: estadístico de asimetría de la imagen |
| %[standard-deviation] | CALCULADO: estadístico de desviación estándar de la imagen |
| %[type] | CALCULADO: tipo de imagen |
| %[unique] | nombre de archivo temporal único ??? |
| %[units] | unidades de resolución de la imagen |
| %[version] | información de versión de este ImageMagick en ejecución |
| %[width] | ancho original de la imagen (cuando se leyó) |
| %[zero] | cero (nombre de archivo único para uso de delegados) |
Propiedades
Todas las demás formas largas de los escapes de porcentaje (no la forma larga de una sola letra) se manejan sin distinguir entre mayúsculas y minúsculas. Tales escapes intentarán buscar ese nombre en orígenes de datos específicos.
El espacio de búsqueda principal (si no es un atributo específico de los listados arriba) es una cadena de propiedad de texto libre. Tales cadenas se asocian y guardan con las imágenes, y normalmente se establecen usando la opción de CLI -set (o su equivalente de la API), o mediante opciones de conveniencia especiales (como -label, -comment, -caption).
Estas opciones de conveniencia se guardan de forma global (como «opciones globales», de modo que pueden establecerse antes de leer las imágenes) y luego se transfieren a la propiedad de cada imagen, únicamente cuando estas se leen. En ese momento se maneja cualquier escape de porcentaje interno presente.
Para cambiar una propiedad de una imagen que ya está en memoria, debe usar -set.
Tenga en cuenta que las propiedades, al igual que los atributos (y los perfiles), se guardan con las imágenes al escribirlas, si el formato del archivo de imagen lo permite.
Artefactos y opciones
Los escapes de porcentaje anteriores están asociados con los atributos y propiedades primarios. Que son el foco original y principal de tales escapes de porcentaje.
Sin embargo, hay muchos ajustes operativos que usan diversos operadores de ImageMagick que pueden ser útiles de establecer y acceder más tarde. Estos consisten en artefactos por imagen y opciones globales (asociadas a una lista de imágenes, normalmente la lista de imágenes actual).
Tenga en cuenta que la principal diferencia entre un artefacto y una propiedad es que un artefacto, al ser un ajuste operativo interno, no se guarda con las imágenes (si ello es posible).
Por ejemplo, cuando usa -define 'distort:viewport=100x100', en realidad está generando una opción global, que el operador -distort usará para modificar su comportamiento (la «vista» de la imagen de salida distorsionada).
Una opción es esencialmente un artefacto que se ha almacenado de forma global como parte de una lista de imágenes (en concreto, una «Wand» de imágenes). Como tales, son idénticos, en el sentido de que una opción es simplemente un artefacto global para todas las imágenes asociadas.
Así pues, puede usar -set 'option:distort:viewport' '100x100' para lograr el mismo resultado de establecer un artefacto que use la operación distort.
Manejo interno de una opción global…
La biblioteca central ('MagickCore') no suele entender directamente las opciones globales. Por tanto, continuando con el ejemplo anterior, la función DistortImages() solo busca un artefacto para descubrir si se le ha proporcionado un 'viewport'.
Cómo se usan las opciones globales cuando una función de la biblioteca solicita un artefacto es una de las diferencias clave entre IMv6 e IMv7.
Establece un enlace de vuelta a los datos de las opciones globales, de modo que si no se encuentra un artefacto específico por imagen, se buscará una opción global equivalente para esa lista de imágenes directamente. Esto evita copiar repetidamente estas opciones de texto libre a artefactos, y significa que ahora puede definir por separado una opción global para una lista y un artefacto individual de anulación para una imagen específica de esa lista.
Tenga en cuenta que muchas API que no usan Wands (PerlMagick, por ejemplo, que usa arrays de imágenes en lugar de una Wand). En estas API no dispondrá de opciones globales, solo de artefactos por imagen.
En resumen, una opción global, si está disponible, es equivalente a un artefacto por imagen.
Listado con patrones glob de propiedades, artefactos y opciones
El ajuste puede contener un patrón glob. De este modo, ahora puede listar todas las propiedades, artefactos y opciones de cadenas de texto libre (pero no los atributos de imagen específicos) usando…
magick ... \
-print "__Properties__\n%[*]" \
-print "__Artifacts__\n%[artifact:*]" \
-print "__Options__\n%[option:*]" \
...
El formato de los patrones glob es muy específico y, como tal, generalmente solo se usa para listar ajustes concretos, como al depurar, en lugar de para el procesamiento de imágenes.
Prefijos de escapes de porcentaje calculados
Hay algunos prefijos especiales (antes del primer ':') que realizan cálculos basados en la cadena proporcionada por el usuario que sigue a ese prefijo. Por ejemplo, puede hacer un cálculo numérico usando %[fx:...] para evaluar las expresiones FX dadas:
%[fx:expression]
Use pixel: o hex: para evaluar el color de un píxel definido por la expresión FX:
%[pixel:expression]
Use -define para especificar el cumplimiento de color (p. ej. -define pixel:compliance=css)
.
Prefijos de escapes de porcentaje de perfiles específicos
También puede usar la siguiente sintaxis de formato especial para imprimir los metadatos de imagen EXIF que se incluyeron en la imagen leída:
%[EXIF:tag]
Elija tag entre los siguientes:
* (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
Rodee la especificación de formato con comillas para evitar que su shell malinterprete los espacios y los corchetes.
La siguiente sintaxis de formato especial puede usarse para imprimir la información IPTC contenida en el archivo:
%[IPTC:dataset:record]
Seleccione dataset y record entre los siguientes:
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