ImageMagick 高级图像查看技巧

通过这些 ImageMagick 命令行驱动的图像编辑应用程序的技巧,更好地管理您的数字照片集。
567 位读者喜欢这篇文章。
Old camera green

Internet Archive Book Images。由 Opensource.com 修改。CC BY-SA 4.0

在我的 ImageMagick 介绍中,我展示了如何使用该应用程序的菜单来编辑图像并添加效果。在本文的后续内容中,我将展示使用此开源图像编辑器查看图像的其他方法。

另一种效果

在深入探讨 ImageMagick 的高级图像查看之前,我想分享另一个有趣但简单的效果,使用 convert 命令,我在之前的文章中详细讨论过。这涉及到
-edge 选项,然后是 negate

convert DSC_0027.JPG -edge 3 -negate edge3+negate.jpg

Using the edge and negate options on an image.

opensource.com

我喜欢编辑后的图像的许多方面——大海的外观、背景和前景植被,尤其是太阳及其倒影,以及天空。

使用 display 查看一系列图像

如果您像我一样是命令行用户,您就会知道 shell 为复杂任务提供了很多灵活性和快捷方式。在这里,我将展示一个示例:ImageMagick 的 display 命令如何克服我在使用 GNOME 桌面的 Shotwell 图像管理器导入图像时遇到的问题。

Shotwell 创建了一个很好的目录结构,它使用每个图像的 Exif 数据,根据图像拍摄或创建的日期存储导入的图像。您最终会得到一个年份的顶层目录,每个月的子目录(01、02、03 等),然后是每个月的日期的另一层子目录。我喜欢这种结构,因为根据拍摄时间查找图像或一组图像很容易。

但是,当我想查看最近几个月甚至整年的所有图像时,这种结构就不是那么好了。对于典型的图像查看器,这涉及在目录结构中上下跳转很多次,但 ImageMagick 的 display 命令使其变得简单。例如,假设我想查看今年所有的照片。如果我在命令行中输入 display,像这样

display -resize 35% 2017/*/*/*.JPG

我可以逐月逐日地浏览这一年。

现在假设我在寻找一张图像,但我不记得是在 2016 年上半年还是 2017 年上半年拍摄的。这个命令

display -resize 35% 201[6-7]/0[1-6]/*/*.JPG

将显示的图像限制为 2016 年和 2017 年的 1 月到 6 月。

使用 montage 查看图像缩略图

现在假设我在寻找要编辑的图像。一个问题是 display 显示每个图像的文件名,但不显示其在目录结构中的位置,因此不清楚在哪里可以找到该图像。此外,当我(偶尔)从相机下载图像时,我会从相机的存储中清除它们,因此文件名在不可预测的时间重新从 DSC_0001.jpg 开始。最后,当我使用 display 显示整年图像时,可能需要花费大量时间来浏览 12 个月的图像。

这就是 montage 命令的用武之地,该命令将一系列图像的缩略图版本放入单个图像中,非常有用。例如

montage -label %d/%f -title 2017 -tile 5x -resize 10% -geometry +4+4 2017/0[1-4]/*/*.JPG 2017JanApr.jpg

从左到右,此命令首先为每个图像指定一个标签,该标签由文件名 (%f) 及其目录 (%d) 结构组成,并用 / 分隔。接下来,该命令将主目录指定为标题,然后指示 montage 将图像平铺成五列,每个图像调整大小为 10%(这很容易适合我的显示器屏幕)。geometry 设置在每个图像周围放置空白。最后,它指定要包含在 montage 中的图像,以及用于保存 montage 的适当文件名 (2017JanApr.jpg)。因此,现在图像 2017JanApr.jpg 成为了我可以反复使用的参考,当我想查看这段时间内的所有图像时。

管理内存

您可能想知道为什么我只为这个 montage 指定了四个月的时间段(1 月到 4 月)。这里您需要稍微小心一点,因为 montage 可能会消耗大量内存。我的相机创建的图像文件每个大约 2.5MB,我发现我的系统的内存可以轻松处理大约 60 张图像。当我达到 80 张左右时,当其他程序(如 Firefox 和 Thunderbird)在后台运行时,我的计算机就会冻结。这似乎与内存使用率有关,内存使用率对于 montage 来说会上升到可用 RAM 的 80% 或更高。(您可以通过在执行此过程时运行 top 来检查这一点。)如果我关闭所有其他程序,我可以管理 80 张图像,然后我的系统才会冻结。

以下是如何在运行 montage 命令之前,大致了解您要处理多少文件

ls 2017/0[1-4/*/*.JPG > filelist; wc -l filelist

命令 ls 生成搜索中文件的列表,并将其保存到任意命名的 filelist 文件中。然后,带有 -l 选项的 wc 命令报告文件中的行数,换句话说,ls 找到多少个文件。这是我的输出

163 filelist

糟糕!从 1 月到 4 月拍摄了 163 张图像,创建所有这些图像的 montage 几乎肯定会使我的系统冻结。我需要稍微修剪一下列表,也许只到三月份甚至更早。但是,如果我在 4 月 20 日到 30 日拍摄了很多照片,并且我认为这是我的大部分问题所在。以下是 shell 如何帮助我们弄清楚这一点

ls 2017/0[1-3]/*/*.JPG > filelist; ls 2017/04/0[1-9]/*.JPG >> filelist; ls 2017/04/1[0-9]/*.JPG >> filelist; wc -l filelist

这是一系列四个命令,全部在一行中,用分号分隔。第一个命令指定从 1 月到 3 月拍摄的图像数量;第二个命令使用 >> 追加运算符添加 4 月 1 日到 9 日;第三个命令追加 4 月 10 日到 19 日。第四个命令 wc -l 报告

81 filelist

我知道如果我关闭其他应用程序,81 个文件应该是可以处理的。

使用 montage 命令管理这一点很容易,因为我们只是转置了上面所做的事情

montage -label %d/%f -title 2017 -tile 5x -resize 10% -geometry +4+4 2017/0[1-3]/*/*.JPG 2017/04/0[1-9]/*.JPG 2017/04/1[0-9]/*.JPG 2017Jan01Apr19.jpg

montage 命令中的最后一个文件名将是输出;之前的所有内容都是输入,并从左到右读取。这花费了不到三分钟的时间运行,并生成了一个大约 2.5MB 大小的图像,但我的系统之后变得有点迟缓。

显示 montage

当您首次使用 display 命令查看大型 montage 时,您可能会看到 montage 的宽度还可以,但图像在垂直方向上被压缩以适应屏幕。不用担心;只需左键单击图像,然后选择 View > Original Size。再次单击以隐藏菜单。

我希望本文对您展示查看图像的新方法有所帮助。在我的下一篇文章中,我将讨论更复杂的图像处理。

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

2 条评论

好文章,Greg!我时不时地翻出 ImageMagick 用于一些晦涩的用途或其他用途;它真是一个很棒的工具。但真正酷的是发现了 montage 功能,这应该让它在我们很多人心中占据更重要的地位。

我应该补充一点,虽然小标题谈论的是制作缩略图的 montage,但我在这里生成的那些比缩略图大。如果您省略 -geometry 选项,您将获得大约 120 像素宽的缩略图,在这种情况下,您也不需要 -resize 选项。对我来说,这太小了,因为您会错过图像中的细节。

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
 

每周在您的收件箱中获取精彩内容。

© . All rights reserved.