ImageMagick 依賴於許多外部資源,包括設定檔、可載入模組、字型和環境變數。
設定檔
ImageMagick 依賴於許多外部設定檔,詳情如下
- coder.xml
- 將圖像格式與指定的編解碼器模組相關聯。ImageMagick 具有許多編解碼器模組,用於支援圖像格式(例如 JPEG)的讀取和/或寫入。一些編解碼器模組支援多種相關聯的圖像格式,並且相關聯的格式与其相應的編解碼器模組之間的映射關係在此設定檔中定義。例如,PNG 編解碼器模組不僅支援 PNG 圖像格式,還支援 JNG 和 MNG 格式。
- colors.xml
- 將顏色名稱与其紅色、綠色、藍色和 Alpha 強度相關聯。許多命令列選項都需要顏色參數。通常使用名稱(例如白色)而不是十六進制值(例如 #fff)來引用顏色會更方便。此檔案將顏色名稱映射到其等效的紅色、綠色、藍色和 Alpha 強度(例如,對於白色,紅色 = 255,綠色 = 255,藍色 = 255,Alpha = 0)。
- configure.xml
- 設定 ImageMagick 建置參數和系統範圍的環境變數(例如 MAGICK_TEMPORARY_PATH)。在建置 ImageMagick 時,許多建置參數會儲存到此設定檔中。它們包括版本、發行日期、相依的委託函式庫和量子深度等。
- delegates.xml
- 將委託程式與某些圖像格式相關聯。ImageMagick 依賴於許多委託程式來支援某些圖像格式,例如使用 darktable 讀取 RAW 相機格式,或使用 Ghostscript 讀取 Postscript 圖像。使用此設定檔將輸入或輸出格式映射到外部委託程式。
- english.xml
- 將訊息標籤與英文翻譯相關聯。
- francais.xml
- 將訊息標籤與法文翻譯相關聯。
- locale.xml
- 將訊息標籤與您地區設定的翻譯相關聯。ImageMagick 具有許多資訊、警告和錯誤訊息,這些訊息以標籤表示。標籤是訊息的簡短描述,例如 FileNotFound 或 MemoryAllocationFailed。此設定檔列出了具有 ImageMagick 可識別的每個標籤的翻譯的地區設定。目前,只有英文和法文翻譯在 english.xml 和 francais.xml 設定檔中可用。
- log.xml
- 設定日誌記錄參數。ImageMagick 能夠產生大量的資訊性或除錯語句。使用此檔案來設定資訊在日誌訊息中的顯示方式,以及您希望發佈日誌訊息的位置。
- mime.xml
- 將網際網路媒體類型與唯一識別碼相關聯。許多檔案和資料流都具有唯一識別特定網際網路媒體類型的識別碼。例如,「Corel Draw 繪圖」格式(mime 類型 =「application/vnd.corel-draw」)的檔案與檔案名稱模式 *.cdr 相關聯,並且還具有字元「CDRXvrsn」的初始字串。ImageMagick 使用這些資訊的組合(如果有的話)來嘗試快速確定檔案或資料流的網際網路媒體類型。
- policy.xml
- 設定 ImageMagick 的 安全策略。預設情況下,允許任何編解碼器、委派、過濾器或檔案路徑。使用策略可以拒絕存取某些資源,例如 MPEG 影片委派,或者允許從檔案系統讀取影像,但拒絕寫入同一個檔案系統。您也可以使用資源策略來設定資源限制。對於想要限制 ImageMagick 對系統整體影響的多使用者伺服器來說,策略非常有用。例如,要將記憶體中的最大影像大小限制為 100MP
<policy domain="resource" name="area" value="100MP"/>
任何大於此區域限制的影像都會被快取到磁碟而不是記憶體。使用 width 來限制影像的最大寬度(以像素為單位)。超過此限制將會引發例外狀況並停止處理。<policy domain="resource" name="width" value="8KP"/>
要將任何 ImageMagick 命令的運行時間限制為 5 分鐘,請使用以下策略<policy domain="resource" name="time" value="300"/>
為了方便起見,請使用 SI 字首定義記憶體、映射和磁碟資源的參數(例如 100MB)。此外,資源策略是每個 ImageMagick 執行個體的最大值(例如,策略記憶體限制為 1GB,-limit 2GB 選項超過了策略最大值,因此記憶體限制為 1GB)。 - quantization-table.xml
- 自訂 JPEG 量化表。使用 -define:q-table=quantization-table.xml 啟用。
- thresholds.xml
- 設定有序抖動的臨界值映射。
- type.xml
- 設定字型。定義您想在 ImageMagick 中使用的任何字型的字型名稱、字族、鑄造廠、樣式、格式、度量和字元。
- type-ghostscript.xml
- 設定 Ghostscript 字型。Ghostscript 套件包含許多可以使用 ImageMagick 存取的 字型。
- type-windows.xml
- 將名稱與 Windows 字型字元關聯。
在 Linux 和 Linux 系統下,ImageMagick 會按照以下順序搜尋上述每個設定檔,並在找到時載入它們
$MAGICK_CONFIGURE_PATH $PREFIX/etc/ImageMagick-7 $PREFIX/share/ImageMagick-7 $XDG_CACHE_HOME/ImageMagick $HOME/.config/ImageMagick <client path>/etc/ImageMagick
環境變數 $PREFIX 是預設安裝路徑(例如 /usr/local)。用戶端路徑 是 ImageMagick 用戶端的執行路徑(例如 /usr/local)。
對於 Linux 或 Linux 預先編譯的未安裝二進位版本,設定載入順序為
$MAGICK_CONFIGURE_PATH $MAGICK_HOME/etc/ImageMagick-7 $MAGICK_HOME/share/ImageMagick-7 $PREFIX/share/ImageMagick-7 $XDG_CACHE_HOME/ImageMagick $HOME/.config/ImageMagick/ <client path>/etc/ImageMagick <current directory>
在 Windows 系統下,ImageMagick 會按照以下順序搜尋這些設定檔,並在找到時載入它們
$MAGICK_CONFIGURE_PATH <windows registry> $PREFIX/config $USERPROFILE/.config/ImageMagick <client path>
以上,$PREFIX 是預設安裝路徑,通常是 c:\\Program Files\\ImageMagick-7.1.1。
對於未安裝的 Windows 安裝,設定載入順序為
$MAGICK_CONFIGURE_PATH $MAGICK_HOME $USERPROFILE/.config/ImageMagick client path <current directory>
如果找不到設定檔,ImageMagick 將會使用內建的預設值。
模組
編解碼器
影像編解碼器(即編碼器/解碼器)負責註冊、選擇性地分類、選擇性地讀取、選擇性地寫入和取消註冊一種影像格式(例如 PNG、GIF、JPEG 等)。ImageMagick 會按照以下順序搜尋編解碼器,並使用找到的第一個相符項
$MAGICK_HOME/lib/ImageMagick-7.1.1/modules-Q16/coders <client path>/../lib/ImageMagick-7.1.1/modules-Q16/coders $MAGICK_HOME/lib/ImageMagick-7.1.1/modules-Q16/coders $MAGICK_HOME/share/ImageMagick-7.1.1/modules-Q16/coders $XDG_CACHE_HOME/ImageMagick $HOME/.config/ImageMagick <client path>/lib/ImageMagick-7.1.1/modules-Q16/coders
過濾器
ImageMagick 提供了一種方便的機制來新增您自己的自訂影像處理演算法。ImageMagick 會按照以下順序搜尋過濾器,並使用找到的第一個相符項
$MAGICK_HOME/lib/ImageMagick-7.1.1/modules-Q16/filters <client path>/../lib/ImageMagick-7.1.1/modules-Q16/filters $MAGICK_HOME/lib/ImageMagick-7.1.1/modules-Q16/filters $MAGICK_HOME/share/ImageMagick-7.1.1/modules-Q16/filters $XDG_CACHE_HOME/ImageMagick $HOME/.config/ImageMagick <client path>/lib/ImageMagick-7.1.1/modules-Q16/filters
字型
ImageMagick 能夠載入原始的 TrueType 和 Postscript 字型檔案。它會按照以下順序搜尋字型設定檔 type.xml,並在找到時載入它們
$MAGICK_CONFIGURE_PATH $MAGICK_HOME/etc/ImageMagick/-7.1.1 $MAGICK_HOME/share/ImageMagick-7.1.1 $XDG_CACHE_HOME/ImageMagick $HOME/.config/ImageMagick <client path>/etc/ImageMagick $MAGICK_FONT_PATH
環境變數
ImageMagick 辨識的環境變數包括
HOME | 如果目錄存在,則設定在 $HOME/.config/ImageMagick 中搜尋設定檔的路徑。 |
LD_LIBRARY_PATH | 設定 ImageMagick 共享程式庫和其他相依程式庫的路徑。 |
MAGICK_AREA_LIMIT | 設定可以駐留在像素快取記憶體中的影像的最大 寬度 * 高度。超過區域限制的影像會被快取到磁碟(請參閱 MAGICK_DISK_LIMIT),並且可以選擇性地進行記憶體映射。 |
MAGICK_CODER_FILTER_PATH | 設定搜尋篩選處理模組時使用的搜尋路徑(透過 -process 呼叫)。此路徑允許使用者將可載入模組新增到偏好的位置,而不是將其複製到 ImageMagick 安裝目錄中,從而擴展 ImageMagick 的影像處理功能。搜尋路徑的格式類似於作業系統搜尋路徑(例如,Linux 使用冒號分隔,Microsoft Windows 使用分號分隔)。在嘗試 預設搜尋路徑 之前,會先搜尋此使用者指定的搜尋路徑。 |
MAGICK_CODER_MODULE_PATH | 設定 ImageMagick 可以找到其編碼器模組的路徑。此路徑允許使用者透過從偏好的位置新增可載入編碼器模組,而不是將其複製到 ImageMagick 安裝目錄中,從而任意擴展 ImageMagick 支援的影像格式。搜尋路徑的格式類似於作業系統搜尋路徑(例如,Linux 使用冒號分隔,Microsoft Windows 使用分號分隔)。在嘗試 預設搜尋路徑 之前,會先搜尋此使用者指定的搜尋路徑。 |
MAGICK_CONFIGURE_PATH | 設定 ImageMagick 可以找到其設定檔的路徑。使用此搜尋路徑來搜尋設定檔 (.xml)。搜尋路徑的格式類似於作業系統搜尋路徑(例如,Linux 使用冒號分隔,Microsoft Windows 使用分號分隔)。在嘗試 預設搜尋路徑 之前,會先搜尋此使用者指定的搜尋路徑。 |
MAGICK_DATE_PRECISION | 設定任何時間戳記列印的最大字元數。 |
MAGICK_DEBUG | 設定除錯選項。如需除錯選項的說明,請參閱 -debug。 |
MAGICK_DISK_LIMIT | 設定像素快取允許使用的最大磁碟空間量(以位元組為單位)。超過此限制時,將不會建立像素快取,並且會傳回錯誤訊息。 |
MAGICK_ERRORMODE | 設定處理程序錯誤模式(僅限 Windows)。典型的用法可能是值為 1,以防止錯誤模式對話方塊顯示訊息方塊並導致應用程式停止回應。 |
MAGICK_FILE_LIMIT | 設定開啟的像素快取檔案的最大數量。超過此限制時,任何後續快取到磁碟的像素都會關閉並在需要時重新開啟。此行為允許同時存取磁碟上的大量影像,但由於重複的開啟/關閉呼叫而導致速度變慢。 |
MAGICK_FONT_PATH | 設定 ImageMagick 搜尋 TrueType 和 Postscript Type1 字型檔的路徑。僅當在目前目錄中找不到特定字型檔時,才會參考此路徑。 |
MAGICK_HEIGHT_LIMIT | 設定影像的最大 高度。 |
MAGICK_HOME | 設定 ImageMagick 安裝目錄頂層的路徑。此路徑由 未安裝 的 ImageMagick 版本參考,這些版本沒有硬編碼的位置或由安裝程式設定的位置。 |
MAGICK_LIST_LENGTH_LIMIT | 設定影像序列的最大長度。 |
MAGICK_MAP_LIMIT | 設定要為像素快取配置的最大記憶體映射量(以位元組為單位)。超過此限制時,影像像素將會快取到磁碟(請參閱 MAGICK_DISK_LIMIT)。 |
MAGICK_MEMORY_LIMIT | 設定要從堆積為像素快取配置的最大記憶體量(以位元組為單位)。超過此限制時,影像像素將會快取到記憶體映射的磁碟(請參閱 MAGICK_MAP_LIMIT)。 |
MAGICK_OCL_DEVICE | 設定為 關閉 以停用某些加速演算法(例如,模糊、捲積等)的硬體加速。 |
MAGICK_PRECISION | 設定要列印的最大有效位數。 |
MAGICK_SHRED_PASSES | 如果要將 ImageMagick 建立的暫存檔案保持私密,請在刪除這些檔案之前用零或隨機資料覆寫它們。在第一次傳遞時,檔案會被歸零。對於後續的傳遞,將會寫入隨機資料。 |
MAGICK_SYNCHRONIZE | 設定為「true」以確保所有影像數據都已完全寫入並同步到磁碟。這會導致效能下降,但其優點包括在系統崩潰時確保影像檔案有效,以及在影像像素快取空間不足時及早回報。 |
MAGICK_TEMPORARY_PATH | 設定儲存臨時檔案的路徑。 |
MAGICK_THREAD_LIMIT | 設定最大平行執行緒數。許多 ImageMagick 演算法在多處理器系統上會平行運行。使用此環境變數可設定允許平行運行的最大執行緒數。 |
MAGICK_THROTTLE_LIMIT | 定期釋放 CPU,至少釋放指定毫秒數的時間。 |
MAGICK_TIME_LIMIT | 設定最大時間(以秒為單位)。超過此限制時,將會擲回例外狀況並停止處理。 |
MAGICK_WIDTH_LIMIT | 設定影像的最大寬度。 |
SOURCE_DATE_EPOCH | UNIX 時間戳記,定義為自 1970 年 1 月 1 日 00:00:00 UTC 以來(不含閏秒)的秒數。用於管道建置的特殊用途設定。此設定會停用存留期設定。 |
使用 SI 字首(例如 100MB)定義 MAGICK_MEMORY_LIMIT、MAGICK_DISK_LIMIT 和 MAGICK_MEMORY_LIMIT 環境變數的參數。MAGICK_WIDTH_LIMIT、MAGICK_HEIGHT_LIMIT 和 MAGICK_AREA_LIMIT 接受像素後綴,例如 MP 表示百萬像素(例如 100MP)。請注意,您可以限制相對於任何安全策略的限制,但不能放寬它們。