ImageMagick 入门

了解使用这款轻量级图像编辑器查看和修改图像的常用方法。
628 位读者喜欢这篇文章。
Artistic spraypaint bottles

Opensource.com

在最近一篇关于轻量级图像查看器的文章中,作者 Scott Nesbitt 提到了 display,它是 ImageMagick 的组件之一。ImageMagick 不仅仅是一个图像查看器,它还为图像编辑提供了大量的实用程序和选项。本教程将更详细地解释如何在 ImageMagick 中使用 display 命令和其他命令行实用程序。

虽然现在有很多优秀的图像编辑器,但你可能会想知道为什么有人会选择像 ImageMagick 这样主要基于非 GUI 命令行操作的程序。首先,它非常可靠。但更大的好处是,它允许你设置方法,以特定的方式编辑大量的图像。

这篇关于常用 ImageMagick 命令的介绍应该能帮助你入门。

display 命令

让我们从 Scott 提到的命令开始:display。假设你有一个目录,其中包含许多你想查看的图像。使用以下命令启动 display

cd Pictures
display *.JPG

这将按字母数字顺序依次加载你的 JPG 文件,一次在一个简单的窗口中加载一个文件。左键单击图像会弹出一个简单的独立菜单(你将在 ImageMagick 中看到的唯一 GUI 功能)。

display menu

opensource.com

以下是在 display 菜单中可以找到的内容

  • File 包含选项 Open(打开), Next(下一个), Former(上一个), Select(选择), Save(保存), Print(打印), Delete(删除), New(新建), Visual Directory(可视化目录)Quit(退出)Select 选择要显示的特定图像文件,Visual Directory 显示当前工作目录中的所有文件(不仅仅是图像)。如果你想滚动浏览所有选定的图像,你可以使用 NextFormer,但使用它们的键盘快捷键更容易(空格键用于下一张图像,退格键用于上一张图像)。
  • 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

monochrome example

opensource.com

     convert DSC_0008.jpg -charcoal 1.2 charcoal_example.jpg

charcoal example

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

edge and reduced colors example

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

canny demo

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 拥有广泛的 文档,尽管该站点缺乏示例或结果展示,但我认为最好的学习方法是通过实验和更改各种设置和选项。

Greg Pittman
Greg 是肯塔基州路易斯维尔的一位退休神经科医生,长期以来对计算机和编程感兴趣,从 1960 年代的 Fortran IV 开始。当 Linux 和开源软件出现时,它激发了他学习更多知识并最终做出贡献的承诺。他是 Scribus 团队的成员。

7 条评论

不错的概述和复习。谢谢!

'display' 是我发现的唯一可以接受 URL 的图像查看器

SourceSite="http://ktvl.com/resources/ftptransfer/ktvl/maps"
alias show_local_radar='display $SourceSite/so_or_no_ca_radar.JPG &'

我安装了这么完整的工具,但不知道它的潜力……哈哈

我甚至使用在线工具来简单地将图片从 png 转换为 jpg!

很高兴知道,谢谢!

这款轻量级图像编辑器有很多功能。我计划开始使用 ImageMagick。

很棒的文章,Greg。我很高兴我们现在有关于 Imagemagick 的文章了。

Creative Commons 许可协议本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.