⚠️ 这是一个非官方翻译网站,与 ImageMagick Studio LLC 无关。准确信息请参阅原文(https://imagemagick.org/resources/)

资源(配置文件与环境变量)

配置文件 • 模块 • 字体 • 环境变量

ImageMagick 依赖于许多外部资源,包括配置文件、可加载模块、字体和环境变量。

配置文件

ImageMagick 依赖于以下详述的许多外部配置文件:

coder.xml
将图像格式与指定的编码器模块关联。ImageMagick 拥有许多编码器模块,用于支持某种图像格式(如 JPEG)的读取和/或写入。某些编码器模块支持多种关联的图像格式,而关联格式与其对应编码器模块之间的映射就在此配置文件中定义。例如,PNG 编码器模块不仅支持 PNG 图像格式,还支持 JNG 和 MNG 格式。
colors.xml
将颜色名称与其红、绿、蓝、alpha 强度关联。许多命令行选项需要一个颜色参数。用名称(如 white)而非十六进制值(如 #fff)来引用颜色通常更为方便。此文件将颜色名称映射为等价的红、绿、蓝、alpha 强度(例如 white 对应 red = 255、green = 255、blue = 255、alpha = 0)。
configure.xml
设置 ImageMagick 的构建参数和系统级环境变量(如 MAGICK_TEMPORARY_PATH)。在构建 ImageMagick 时,许多构建参数会被保存到此配置文件中,其中包括版本、发布日期、依赖的委托库以及量子深度等。
delegates.xml
将委托程序与特定图像格式关联。ImageMagick 依赖于许多委托程序来支持某些图像格式,例如用 darktable 读取相机原始格式,或用 Ghostscript 读取 Postscript 图像。使用此配置文件可将输入或输出格式映射到外部委托程序。
english.xml
将消息标签与英文翻译关联。
francais.xml
将消息标签与法文翻译关联。
locale.xml
将消息标签与适用于你所在区域设置的翻译关联。ImageMagick 拥有许多以标签形式表示的信息、警告和错误消息。标签是消息的简短描述,例如 FileNotFound 或 MemoryAllocationFailed。此配置文件列出了为 ImageMagick 所识别的每个标签提供翻译的各区域设置。目前仅在 english.xml 和 francais.xml 配置文件中提供英文和法文翻译。
log.xml
配置日志记录参数。ImageMagick 能够输出大量的信息或调试语句。使用此文件可配置信息在日志消息中如何呈现,以及希望将日志消息输出到何处。
mime.xml
将互联网媒体类型与唯一标识符关联。许多文件和数据流拥有可唯一标识某种特定互联网媒体类型的标识符。例如,"Corel Draw drawing" 格式(mime type="application/vnd.corel-draw")的文件与文件名模式 *.cdr 关联,并且具有初始字符串 "CDRXvrsn"。在可用时,ImageMagick 会利用这些信息的组合,尝试快速判定文件或数据流的互联网媒体类型。
policy.xml

配置 ImageMagick 的安全策略。默认情况下允许任何编码器、委托、滤镜或文件路径。可使用策略来拒绝访问,例如拒绝访问 MPEG 视频委托,或允许从某个文件系统读取图像但拒绝向同一文件系统写入。也可使用资源策略来设置资源上限。策略对于希望限制 ImageMagick 对系统整体影响的多用户服务器很有用。例如,要将内存中的最大图像尺寸限制为 100MP:

任何大于此 area 上限的图像都会被缓存到磁盘而非内存。要以像素为单位限制图像的最大宽度,请使用 width。超过此上限时会抛出异常并停止处理。

<policy domain="resource" name="width" value="8KP"/>

要将任何 ImageMagick 命令的经过时间限制为 5 分钟,请使用此策略:

<policy domain="resource" name="time" value="300"/>

为方便起见,memory、map 和 disk 资源的参数可用 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 上,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)。client path 是 ImageMagick 客户端的执行路径(例如 /usr/local)。

对于 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.2。

对于未安装的 Windows 安装,配置加载顺序为:

$MAGICK_CONFIGURE_PATH
$MAGICK_HOME
$USERPROFILE/.config/ImageMagick
client path
<current directory>

如果找不到配置文件,ImageMagick 将依赖内置的默认值。

模块

编码器

图像编码器(即编码器/解码器)负责对一种图像格式(如 PNG、GIF、JPEG 等)进行注册、(可选地)分类、(可选地)读取、(可选地)写入以及注销。ImageMagick 会按以下顺序查找编码器,并使用找到的第一个匹配项:

$MAGICK_HOME/lib/ImageMagick-7.1.2/modules-Q16/coders
<client path>/../lib/ImageMagick-7.1.2/modules-Q16/coders
$MAGICK_HOME/lib/ImageMagick-7.1.2/modules-Q16/coders
$MAGICK_HOME/share/ImageMagick-7.1.2/modules-Q16/coders
$XDG_CACHE_HOME/ImageMagick
$HOME/.config/ImageMagick
<client path>/lib/ImageMagick-7.1.2/modules-Q16/coders

滤镜

ImageMagick 提供了一种便捷的机制,用于添加你自己的自定义图像处理算法。ImageMagick 会按以下顺序查找滤镜,并使用找到的第一个匹配项:

$MAGICK_HOME/lib/ImageMagick-7.1.2/modules-Q16/filters
<client path>/../lib/ImageMagick-7.1.2/modules-Q16/filters
$MAGICK_HOME/lib/ImageMagick-7.1.2/modules-Q16/filters
$MAGICK_HOME/share/ImageMagick-7.1.2/modules-Q16/filters
$XDG_CACHE_HOME/ImageMagick
$HOME/.config/ImageMagick
<client path>/lib/ImageMagick-7.1.2/modules-Q16/filters

字体

ImageMagick 能够加载原始的 TrueType 和 Postscript 字体文件。它会按以下顺序查找字体配置文件 type.xml,并在找到时加载它们:

$MAGICK_CONFIGURE_PATH
$MAGICK_HOME/etc/ImageMagick/-7.1.2
$MAGICK_HOME/share/ImageMagick-7.1.2
$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 设置可驻留在像素缓存内存中的图像的最大 width * height。超过 area 上限的图像会被缓存到磁盘(参见 MAGICK_DISK_LIMIT),并可选地进行内存映射。
MAGICK_FILTER_MODULE_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 设置打开的像素缓存文件的最大数量。超过此上限时,随后缓存到磁盘的任何像素都会被关闭并按需重新打开。这种行为允许在磁盘上同时访问大量图像,但由于反复的 open/close 调用会带来速度损失。
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 设为 off 可禁用某些加速算法(如 blur、convolve 等)的硬件加速。
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 起的秒数(不含闰秒)。用于流水线构建的专用设置。此设置会禁用生存时间(time-to-live)设置。

MAGICK_MEMORY_LIMIT、MAGICK_DISK_LIMIT 和 MAGICK_MEMORY_LIMIT 环境变量的参数可用 SI 前缀来定义(例如 100MB)。MAGICK_WIDTH_LIMIT、MAGICK_HEIGHT_LIMIT 和 MAGICK_AREA_LIMIT 接受诸如表示百万像素的 MP 之类的像素后缀(例如 100MP)。请注意,你可以相对于任何安全策略收紧上限,但不能放宽它们。