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

opensource.com
以下是在 display 菜单中可以找到的内容
- File 包含选项 Open(打开), Next(下一个), Former(上一个), Select(选择), Save(保存), Print(打印), Delete(删除), New(新建), Visual Directory(可视化目录) 和 Quit(退出)。Select 选择要显示的特定图像文件,Visual Directory 显示当前工作目录中的所有文件(不仅仅是图像)。如果你想滚动浏览所有选定的图像,你可以使用 Next 和 Former,但使用它们的键盘快捷键更容易(空格键用于下一张图像,退格键用于上一张图像)。
- Edit 提供 Undo(撤销), Redo(重做), Cut(剪切), Copy(复制) 和 Paste(粘贴),这些只是更具体编辑过程的辅助命令。当你尝试不同的编辑以查看它们的作用时,Undo 特别有用。
- View 具有 Half Size(半尺寸), Original Size(原始尺寸), Double Size(双倍尺寸), Resize(调整大小), Apply(应用), Refresh(刷新) 和 Restore(还原)。这些大多是不言自明的,除非你在应用其中一个后保存图像,否则图像文件不会更改。Resize 会弹出一个对话框,让你指定一个特定的尺寸,可以是像素,可以带或不带约束尺寸,也可以是百分比。我不确定 Apply 的作用是什么。
- Transform 显示 Crop(裁剪), Chop(切除), Flop(水平翻转), Flip(垂直翻转), Rotate Right(向右旋转), Rotate Left(向左旋转), Rotate(旋转), Shear(倾斜), Roll(滚动) 和 Trim Edges(修剪边缘)。Chop 使用单击拖动操作来切除图像的垂直或水平部分,并将边缘粘贴在一起。学习这些功能如何工作的最好方法是亲自尝试,而不是阅读有关它们的描述。
- Enhance 提供 Hue(色调), Saturation(饱和度), Brightness(亮度), Gamma(伽玛), Spiff(增强), Dull(减弱), Contrast Stretch(对比度拉伸), Sigmoidal Contrast(Sigmoidal 对比度), Normalize(标准化), Equalize(均衡化), Negate(负片), Grayscale(灰度), Map(映射) 和 Quantize(量化)。这些是用于颜色处理和调整亮度和对比度的操作。
- Effects 具有 Despeckle(去斑), Emboss(浮雕), Reduce Noise(减少噪点), Add Noise(添加噪点), Sharpen(锐化), Blur(模糊), Threshold(阈值), Edge Detect(边缘检测), Spread(扩散), Shade(阴影), Raise(凸起) 和 Segment(分割)。这些都是相当标准的图像编辑效果。
- F/X 选项包括 Solarize(曝光过度), Sepia Tone(棕褐色调), Swirl(漩涡), Implode(内爆), Vignette(晕影), Wave(波浪), Oil Paint(油画) 和 Charcoal Draw(炭笔画),这些也是图像编辑器中非常常见的效果。
- Image Edit 包含 Annotate(注释), Draw(绘制), Color(颜色), Matte(遮罩), Composite(合成), Add Border(添加边框), Add Frame(添加框架), Comment(注释), Launch(启动) 和 Region of Interest(感兴趣区域)。Launch 将在 GIMP 中打开当前图像(至少在我的 Fedora 上是这样)。Region of Interest 允许你选择一个区域来应用编辑;按 Esc 键取消选择区域。
- Miscellany 提供 Image Info(图像信息), Zoom Image(缩放图像), Show Preview(显示预览), Show Histogram(显示直方图), Show Matte(显示遮罩), Background(背景), Slide Show(幻灯片放映) 和 Preferences(偏好设置)。Show Preview 看起来很有趣,但我很难让它工作。
- Help 显示 Overview(概述), Browse Documentation(浏览文档) 和 About Display(关于 Display)。Overview 提供了关于 display 的大量基本信息,并包括大量用于各种命令和操作的内置键盘快捷键。在我的 Fedora 中,Browse Documentation 无法打开任何内容。
虽然 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 个——它们提供了广泛的功能(其中一些 display 也可以做到)。我将只介绍其中的几个,主要侧重于图像处理。使用 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(参见右上方的图像)——任何小于 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%),并添加了阴影(没有设置,因此是默认值),最后为 montage 创建了一个 title。
你可以将所有图像名称放在末尾,最后一个图像名称是保存 montage 的文件。这可能有助于为命令及其所有选项创建别名,然后我可以简单地键入别名,后跟适当的文件名。我偶尔这样做是为了减少创建一系列 montage 所需的输入。
在 ‑canny 示例中,我的 montage 中有四个图像。我添加了 ‑tile 选项,特别是 ‑tile 2x,它创建了一个两列的 montage。我可以指定一个 matrix,‑tile 2x2 或 ‑tile x2 来产生相同的结果。
关于 ImageMagick 还有很多东西要学习,所以我计划写更多关于它的文章,甚至可能写关于使用 Perl 编写 ImageMagick 命令脚本的文章。ImageMagick 拥有广泛的 文档,尽管该站点缺乏示例或结果展示,但我认为最好的学习方法是通过实验和更改各种设置和选项。
7 条评论