在最近一篇关于 轻量级图像查看器 的文章中,作者 Scott Nesbitt 提到了 display,它是 ImageMagick 的组件之一。ImageMagick 不仅仅是一个图像查看器,它还提供了大量的实用程序和选项用于图像编辑。本教程将详细介绍如何使用 display 命令和 ImageMagick 中的其他命令行实用程序。
目前有很多优秀的图像编辑器,您可能想知道为什么有人会选择像 ImageMagick 这样主要基于非 GUI 的命令行程序。 一方面,它非常可靠。 但更大的好处是,它允许您设置方法以特定方式编辑大量图像。
这个 ImageMagick 常用命令的介绍应该能让你入门。
display 命令
让我们从 Scott 提到的命令开始:display。 假设您有一个目录,其中包含许多要查看的图像。 使用以下命令启动 display
cd Pictures
display *.JPG
这将按字母数字顺序依次在简单的窗口中一次加载一个 JPG 文件。 左键单击图像会弹出一个简单的独立菜单(您将在 ImageMagick 中看到的唯一的 GUI 功能)。

opensource.com
以下是您将在 display 菜单中找到的内容
- 文件 包含选项 打开、下一个、上一个、选择、保存、打印、删除、新建、可视目录 和 退出。 选择 选择要显示的特定图像文件,可视目录 显示当前工作目录中的所有文件(不仅仅是图像)。 如果你想滚动浏览所有选定的图像,你可以使用 下一个 和 上一个,但使用它们的键盘快捷键更容易(空格键用于下一个图像,退格键用于上一个图像)。
- 编辑 提供 撤消、重做、剪切、复制 和 粘贴,这些只是更具体的编辑过程的辅助命令。 当您尝试不同的编辑以查看它们的作用时,撤消 特别有用。
- 查看 具有 半尺寸、原始尺寸、双倍尺寸、调整大小、应用、刷新 和 还原。 这些大部分是不言自明的,除非您在应用其中一个后保存图像,否则图像文件不会更改。 调整大小 会弹出一个对话框,以指定特定的尺寸(以像素为单位,无论是否限制尺寸)或百分比。 我不确定 应用 是做什么的。
- 转换 显示 裁剪、切碎、水平翻转、垂直翻转、向右旋转、向左旋转、旋转、倾斜、滚动 和 修剪边缘。 切碎 使用单击拖动操作来切出图像的垂直或水平部分,并将边缘粘贴在一起。 了解这些功能如何工作的最佳方法是玩转它们,而不是阅读它们。
- 增强 提供 色调、饱和度、亮度、Gamma、Spiff、Dull、对比度拉伸、Sigmoidal 对比度、标准化、均衡化、负片、灰度、映射 和 量化。 这些是用于颜色操作和调整亮度和对比度的操作。
- 效果 具有 去斑、浮雕、减少噪点、添加噪点、锐化、模糊、阈值、边缘检测、扩散、阴影、提升 和 分割。 这些是相当标准的图像编辑效果。
- F/X 选项包括 Solarize、棕褐色调、漩涡、内爆、晕影、波浪、油画 和 炭笔画,这些也是图像编辑器中非常常见的效果。
- 图像编辑 包含 注释、绘制、颜色、遮罩、合成、添加边框、添加框架、注释、启动 和 感兴趣区域。 启动 将在 GIMP 中打开当前图像(至少在我的 Fedora 中是这样)。 感兴趣区域 允许您选择要应用编辑的区域; 按 Esc 键取消选择该区域。
- 其他 提供 图像信息、缩放图像、显示预览、显示直方图、显示遮罩、背景、幻灯片 和 首选项。 显示预览 看起来很有趣,但我很难让它工作。
- 帮助 显示 概述、浏览文档 和 关于显示。 概述 提供了关于 display 的大量基本信息,并包括大量用于各种命令和操作的内置键盘等效项。 在我的 Fedora 中,浏览文档 没有把我带到任何地方。
虽然 display 的 GUI 界面提供了一个相当强大的图像编辑器,但 ImageMagick 还提供了 89 个命令行选项,其中许多选项与上面的菜单项相对应。 例如,如果我正在显示一个数字图像目录,这些图像大于我的屏幕尺寸,那么我可以指定
display -resize 50% *.JPG
上面菜单中的许多操作也可以通过在命令行中添加一个选项来完成。 但还有一些无法从菜单中获得,包括 -monochrome,它将图像转换为黑白色(不是灰度),以及 -colors,您可以在其中指定要在图像中使用多少种颜色。 例如,试试这些
display -resize 50% -monochrome *.JPG
display -resize 50% -colors 8 *.JPG
这些操作会创建有趣的图像。 尝试在减少颜色后增强颜色或进行其他编辑。 请记住,除非您保存并覆盖它们,否则原始文件保持不变。
convert 命令
convert 命令有 237 个选项——是的,237 个——提供了你可以做的各种各样的事情(其中一些显示也可以做)。 我将只介绍其中的一些,主要坚持图像操作。 使用 convert 可以做的两件简单的事情是
convert DSC_0001.JPG dsc0001.png
convert *.bmp *.png
第一个命令会将单个文件 (DSC_0001) 从 JPG 转换为 PNG 格式,而不更改原始文件。 第二个命令将在目录中的所有 BMP 图像上执行此操作。
如果您想查看 ImageMagick 可以使用的格式,请键入
identify -list format
让我们挑选一些有趣的方法来使用 convert 命令来操作图像。 这是此命令的一般格式
convert inputfilename [options] outputfilename
您可以有多个选项,并且它们按照从左到右的顺序完成。
这是一对简单的选项
convert monochrome_source.jpg -monochrome monochrome_example.jpg

opensource.com
convert DSC_0008.jpg -charcoal 1.2 charcoal_example.jpg

opensource.com
-monochrome 选项没有相关的设置,但 -charcoal 变量需要一个相关的因子。 根据我的经验,它需要是一个小数(甚至小于 1)才能实现类似炭笔画的东西,否则你会得到相当重的黑色斑点。 尽管如此,图像中的锐利边缘非常清晰,不像炭笔画那样。
现在让我们看看这些
convert DSC_0032.JPG -edge 3 edge_demo.jpg
convert DSC_0032.JPG -colors 4 reduced4_demo.jpg
convert DSC_0032.JPG -colors 4 -edge 3 reduced+edge_demo.jpg

opensource.com
原始图像位于左上角。 在第一个命令中,我应用了一个 -edge 选项,设置值为 3(参见右上角的图像)——任何小于该值的设置对于我来说都太微妙了。 在第二个命令(左下角的图像)中,我们将颜色数量减少到四种,这与原始颜色没有太大区别。 但是看看当我们将这两个组合在第三个命令(右下角的图像)中时会发生什么! 也许有点华而不实,但谁会想到从原始图像或其自身的任何一个选项中得到这个结果呢?
-canny 命令提供了另一个惊喜。 这是另一种边缘检测器,称为“多阶段算法”。 单独使用 -canny 会产生一个几乎全黑的图像和一些白线。 我用一个 -negate 命令来完成
convert DSC_0049.jpg -canny 0x1 -negate canny_egret.jpg
convert DSC_0023.jpg -canny 0x1 -negate canny_ship.jpg

opensource.com
这有点极简主义,但我认为它类似于钢笔和墨水画,与原始照片相比,这是一个非常显着的差异。 它并非适用于所有图像; 一般来说,它最适合具有锐利线条的图像。 失焦的元素可能会消失; 请注意,白鹭图片中的背景沙洲是如何没有显示出来的,因为它很模糊。 还要注意在船舶图片中,虽然大多数边缘都显示得很好,但如果没有颜色,我们会失去图片的形态,所以也许这可以成为一些数字着色甚至印刷后着色的基础。
montage 命令
最后,我想谈谈 montage 命令。 我已经在上面展示了它的例子,我在那里将单个图像组合成复合图像。
以下是我生成炭笔示例的方法(请注意,它将全部在一行上)
montage -label %f DSC_0008.jpg charcoal_example.jpg -geometry +10+10
-resize 25% -shadow -title 'charcoal demo' charcoal_demo.jpg
-label 选项在每个图像下方用其文件名 (%f) 标记每个图像。 如果没有 -geometry 选项,所有图像都将是缩略图大小(120 像素宽),而 +10+10 管理边框大小。 接下来,我调整了整个最终复合图像的大小 (-resize 25%),并添加了一个阴影(没有设置,因此它是默认的),最后为蒙太奇创建了一个 title。
您可以将所有图像名称放在末尾,最后一个图像名称是保存蒙太奇的文件。 这可能有助于为命令及其所有选项创建一个别名,然后我可以简单地键入别名,后跟适当的文件名。 我有时这样做是为了减少创建一系列蒙太奇所需的键入量。
在 -canny 示例中,我使用了蒙太奇中的四张图片。 我添加了 -tile 选项,特别是 -tile 2x,它创建了一个两列的蒙太奇。 我可以指定一个 matrix,-tile 2x2,或者 -tile x2 来产生相同的结果。
关于 ImageMagick 还有很多东西要学习,所以我计划写更多关于它的内容,甚至可能写关于使用 Perl 编写 ImageMagick 命令脚本的内容。 ImageMagick 拥有广泛的文档,虽然该网站缺乏示例或显示结果,但我认为最好的学习方法是通过实验和更改各种设置和选项。
7 条评论