Color Modes

格式化和列印圖像屬性

除了實際的圖像像素之外,圖像還關聯了大量的額外資料(中繼資料)。這些中繼資料可能很有用,可用於顯示、各種計算或修改後續圖像處理操作的行為。您可以在許多選項中使用百分比轉義符,例如在 <a href="/script/../script/command-line-options.php#format_identify_">-format</a> 或蒙太奇 <a href="/script/../script/command-line-options.php#label">-label</a> 中,以列印與圖像相關的各種屬性和其他設定。

配置文件資料 例如 EXIF:資料,包含焦距、曝光、日期,以及在某些情況下包含 GPS 位置。
屬性 這些屬性與圖像資料直接相關,並且更常在一般圖像處理中被修改。這些屬性包括寬度、高度、深度、圖像類型(色彩空間)、時間延遲和背景顏色。大多數特定的百分比轉義符都是用於存取這些資訊。
屬性 這些屬性以自由格式字串的表格形式儲存,並且(如果可能)與圖像一起儲存(特別是在 MIFF 和 PNG 圖像檔案格式中)。這些屬性包括:標籤、說明、註釋。
構件 這些是各種操作(專家)設定,這些設定會被儲存供各種運算子使用,或由使用者儲存以供日後使用。它只是一個自由格式字串的表格。它們在寫入時不會與圖像一起儲存。如需詳細資訊,請參閱下面的構件和選項。
選項 也是操作(專家)設定,這些設定會被儲存供各種運算子使用,但會被全域設定以供整個圖像清單使用(也不會被儲存)。如需詳細資訊,請參閱下面的構件和選項。

百分比轉義符處理

如果您要求百分比轉義符,例如 <samp>%[key]</samp>,則會按照以下順序搜尋設定,直到找到第一個匹配項為止...

  1. 處理特殊前綴,例如「artifact:」、「option:」、「exif:」或「fx:」。這包括這些前綴的計算和或全域符,例如「exif:*」或「artifact:*」(請參閱下文)。
  2. 如果 <samp>key</samp> 包含全域符模式(但沒有已知的前綴),則搜尋自由格式屬性表。
  3. 如果 <samp>key</samp> 是一個特殊的圖像「屬性」名稱(請參閱上面的清單),則返回相關聯的或計算出的圖像屬性。
  4. 以自由格式「屬性」的形式搜尋設定
  5. 以自由格式「構件」的形式搜尋設定
  6. 以自由格式「選項」的形式搜尋設定
  7. 將轉義符替換為空字串,並且可能會產生警告。

請記住,所有百分比轉義符的長名稱形式都以不區分大小寫的方式處理。

您現在可以直接存取構件和選項自由格式字串表,從而允許您覆蓋上述順序,並避免存取名稱相同的屬性或特性。

%[artifact:setting]
%[option:setting] 

轉義符處理需要存取圖像容器。如果沒有可用的圖像容器,則會建立空白圖像,以確保可以處理表達式並返回一個值。例如,<samp>magick -print "%[fx:.8765/3.14]" null: null:</samp>。

單字母屬性百分比轉義符

以下是一些常用的單字母轉義符(簡短形式),用於報告圖像最常見的屬性和特性,例如:圖像檔名、類型、寬度、高度。

\ 反斜線,下一個字元是字面量,不會被解釋
\n 換行符
\r 回車符
< 小於字元。
> 大於字元。
& 「&」字元。
%% 百分比符號
%b 讀取的圖像檔案大小(使用 <a href="#precision">-precision</a> 16 強制結果以位元組為單位)
%c 註釋中繼資料屬性
%d 路徑的目錄組成部分
%e 檔名副檔名或後綴
%f 檔名(包括後綴)
%g 圖層畫布頁面幾何形狀(等效於「%Wx%H%X%Y」)
%h 當前圖像高度(以像素為單位)
%i 影像檔名(備註:會成為「info:」的輸出檔名)
%k 計算值:獨特顏色的數量
%l 標籤中繼資料屬性
%m 影像檔案格式(檔案魔數)
%n 目前影像序列中的影像數量,每影格回報一次
%o 輸出檔名(用於委派)
%p 目前影像清單中的影像索引
%q 量化深度(編譯時期常數)
%r 影像類別和色彩空間
%s 場景編號(除非重新指定,否則從輸入取得)
%t 沒有目錄或副檔名的檔名
%u 唯一的臨時檔名(用於委派)
%w 目前的像素寬度
%x X 解析度(密度)
%y Y 解析度(密度)
%z 影像深度(除非修改,否則為讀取時的深度,影像儲存深度)
%A 影像透明度通道。值包括未定義(無透明度通道)、混合、複製或更新。
%B 讀取的影像檔案大小(以位元組為單位)
%C 影像壓縮類型
%D 影像 GIF 處置方法
%G 原始影像大小(%wx%h;任何調整大小之前)
%H 頁面(畫布)高度
%M Magick 檔名(完全按照給定的原始檔案,包括讀取模式)
%N 目前影像序列中的影像數量,每個影像序列回報一次
%O 頁面(畫布)偏移量(= %X%Y)
%P 頁面(畫布)大小(= %Wx%H)
%Q 影像壓縮品質(0 = 預設值)
%S ??場景??
%T 影像時間延遲(以百分之一秒為單位)
%U 影像解析度單位
%W 頁面(畫布)寬度
%X 頁面(畫布)X 偏移量(包含正負號)
%Y 頁面(畫布)Y 偏移量(包含正負號)
%Z 唯一檔名(用於委派)
%@ 計算值:裁剪邊界框(不實際裁剪)
%# 計算值:影像值的「簽章」雜湊

以下是一個範例命令及其輸出,適用於檔名為 bird.miff 且寬度為 512,高度為 480 的影像。

-> identify -format "%m:%f %wx%h" bird.miff
MIFF:bird.miff 512x480 

請注意,所有單一字母百分比跳脫字元也可以使用長格式(從 IM 版本 6.7.6-9 開始,請參閱下一項)。例如,%[f] 等同於 %f 的簡短格式。

警告:當百分比符號位於數字之後時,不會執行簡短格式百分比跳脫。例如,10%x10 不會將 %x 展開為百分比跳脫。如果您特別想要展開「x」,請使用會覆蓋此特殊情況的長格式。例如:10%[x]10

另請注意,計算屬性可能需要一些時間才能產生,尤其是大型影像。

長格式屬性百分比跳脫

除了上述特定和計算的屬性之外,當用大括號括起來時(長格式)也會被識別

%[basename] 基本檔名,沒有副檔名(如 %t)
%[bit-depth] 像素資料的實際位元深度
%[bounding-box] 影像邊界框的左上角和右下角
%[caption] 標題中繼資料屬性
%[caption:lines] 傳回包裝標題時產生的行數
%[caption:pointsize] 傳回標題處理過程中計算出的點大小
%[channels] 色彩空間助記符,後跟通道總數和中繼通道數,例如,`cmyka 8.3` 表示具有 Alpha 通道的 CMYK 影像,總共有 8 個通道和 3 個中繼通道。
%[colors] 影像中獨特顏色的數量(從 IM 7.0.3.8 開始)
%[colorspace] 影像資料的色彩空間(不包括透明度)
%[compose]  
%[compression] 影像壓縮類型
%[convex-hull] 構成前景物件周圍凸包的點。使用 -define convex-hull:background-color=color 來識別圖像背景顏色。使用 -fuzz 來允許非均勻的背景顏色。
%[convex-hull:extreme-points] 返回凸包的頂部、右側、底部和左側極值點。
%[copyright] ImageMagick 版權字串
%[depth] 寫入圖像的深度(除非更改,否則與輸入相同)
%[deskew:angle] 去斜角,以旋轉度數表示
%[directory] 檔名的目錄部分(如 %d)
%[distortion] 圖像與參考圖像的相似程度 (-compare)
%[dominant-color] 以十六進制返回主要的圖像顏色。使用前請先使用 -kmeans
%[entropy] 計算值:圖像的熵
%[extension] 檔名的副檔名部分(如 %e)
%[gamma] 圖像伽瑪值
%[group] ???視窗群組???
%[height] 圖像的原始高度(讀入時)
%[histogram:contrast-stretch] 計算出的最小和最大對比度拉伸百分比
%[histogram:linear-stretch] 計算出的最小和最大線性拉伸百分比
%[input]  
%[interlace] 圖像交錯模式(從 IM 7.0.3.8 開始)
%[kurtosis] 計算值:圖像的峰度統計量
%[label] 標籤中繼資料屬性
%[label:pointsize] 返回在標籤處理期間計算出的點大小
%[magick] 用於讀取圖像的編碼器(不是文件副檔名)
%[max] 計算值:圖像的最大值統計量
%[mean] 計算值:圖像的平均值統計量
%[median] 計算值:圖像的中位數統計量
%[min] 計算值:圖像的最小值統計量
%[minimum-bounding-box] 使用 -define convex-hull:background-color=color 來識別圖像背景顏色。使用 -fuzz 來允許非均勻的背景顏色。除了邊界框點之外,還會設置以下屬性:minimum-bounding-box:areaminimum-bounding-box:widthminimum-bounding-box:heightminimum-bounding-box:angleminimum-bounding-box:unrotate
%[opaque] 計算值:圖像是否完全不透明?
%[orientation] 圖像方向
%[page] 虛擬畫布(頁面)幾何形狀
%[papersize:name] name 的紙張尺寸,以 72DPI 的像素為單位(例如 papersize:A4)
%[printsize.x] X 列印尺寸
%[printsize.y] Y 列印尺寸
%[profile:icc] ICC 配置文件信息
%[profile:icm] ICM 配置文件信息
%[profiles] 任何嵌入式配置文件的列表
%[quality] 圖像品質值(從 IM 7.0.3.8 開始)
%[rendering-intent] 圖像渲染意圖(從 IM 7.0.3.8 開始)
%[resolution.x] X 密度(解析度),無單位
%[resolution.y] Y 密度(解析度),無單位
%[scene] 輸入文件中圖像的原始場景編號
%[size] 圖像的原始大小(讀入時)
%[skewness] 計算值:圖像的偏度統計量
%[standard-deviation] 計算值:圖像的標準差統計量
%[type] 計算值:圖像類型
%[unique] 唯一的臨時文件名???
%[units] 影像解析度單位
%[version] 此正在運行的 ImageMagick 的版本信息
%[width] 圖像的原始寬度(讀入時)
%[zero] 零(委託使用的唯一文件名)

屬性

所有其他長形式的百分號跳脫序列(非單字母長形式)都以不區分大小寫的方式處理。此類跳脫序列將嘗試在特定數據源中查找該名稱。

主要搜索空間(如果不是上面列出的特定屬性)是一個自由格式的屬性字符串。此類字符串與圖像關聯並保存,通常使用 -set 命令行選項(或 API 等效項)或特殊的便捷選項(例如 -label-comment-caption)設置。

這些便捷選項以“全局選項”的形式全局保存(因此可以在讀取圖像之前設置),然後在讀取圖像時傳輸到單個圖像的屬性中。此時,將處理存在的任何內部百分號跳脫序列。

要更改內存中已存在的圖像的屬性,您需要使用 -set

請注意,如果圖像文件格式允許,屬性(如屬性和配置文件)將在寫入時與圖像一起保存。

工件和選項

前面的百分號跳脫序列與主要屬性和屬性相關聯。這是此類百分號跳脫序列的最初和主要關注點。

但是,各種 ImageMagick 運算符使用的許多操作設置可以設置並稍後訪問。這些設置包括每個圖像的工件和全局選項(與圖像列表關聯,通常是當前圖像列表)。

請注意,工件和屬性之間的主要區別在於,工件作為內部操作設置不會與圖像一起保存(如果可能)。

例如,當您使用 -define 'distort:viewport=100x100' 時,實際上是在生成一個全局選項,-distort 運算符將使用該選項來修改其行為(扭曲的輸出圖像“視圖”)。

選項本質上是一個工件,已作為圖像列表(特別是圖像的“魔杖”)的一部分全局存儲。因此,它們是相同的,因為選項只是所有關聯圖像的全局工件。

因此,您可以使用 -set 'option:distort:viewport' '100x100' 來達到為扭曲操作設置工件以供其使用的相同結果。

全局選項的內部處理...

核心庫('MagickCore')通常不直接理解全局選項。因此,繼續前面的示例,DistortImages() 函數僅查找工件以發現是否為其提供了“視圖”。

當庫函數請求工件時如何使用全局選項是 IMv6 和 IMv7 之間的主要區別之一。

設置指向全局選項數據的反向鏈接,以便如果未找到特定的每個圖像工件,則它將直接查找該圖像列表的等效全局選項。這避免了將這些自由格式選項重複複製到工件中,並且意味著您現在可以為列表單獨定義全局選項,並為該列表中的特定圖像定義單獨的覆蓋工件。

請注意,許多不使用魔杖的 API(例如 PerlMagick 使用圖像數組而不是魔杖)。在這些 API 中,您將只有每個圖像的工件,而沒有全局選項。

總之,如果有全局選項,則它等同於每個圖像的工件。

屬性、工件和選項的 Glob 模式列表

設置 可以包含 glob 模式。因此,您現在可以使用以下方法列出所有自由格式字符串屬性、工件和選項(但不能列出特定的圖像屬性)...

magick ... \
   -print "__Properties__\n%[*]" \
   -print "__Artifacts__\n%[artifact:*]" \
   -print "__Options__\n%[option:*]" \
   ...  

glob 模式的格式非常具體,因此通常僅用於列出特定設置(例如在調試時),而不是用於圖像處理。

計算百分號跳脫序列前綴

有一些特殊的字首(第一個「:」之前),會根據使用者提供的字首後字串執行計算。例如,您可以使用 %[fx:...] 進行數值計算,以評估給定的 FX 運算式。

%[fx:expression] 

使用 pixel:hex: 來評估由 FX 運算式定義的像素顏色。

%[pixel:expression] 

使用 -define 指定色彩標準(例如 -define pixel:compliance=css)。

.

特定設定檔百分比轉義字首

您也可以使用以下特殊格式語法來列印讀入影像中包含的 EXIF 影像中繼資料。

%[EXIF:tag] 

從以下選項中選擇 標籤


*  (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 

請以引號括住格式規格,以防止您的殼層程式錯誤解釋任何空格和方括弧。

以下特殊格式語法可用於列印檔案中包含的 IPTC 資訊。

%[IPTC:dataset:record] 

請從以下選項中選擇 資料集記錄


  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