在我的 ImageMagick 介绍中,我展示了如何使用该应用程序的菜单来编辑图像并添加效果。在本文的后续内容中,我将展示使用此开源图像编辑器查看图像的其他方法。
另一种效果
在深入探讨 ImageMagick 的高级图像查看之前,我想分享另一个有趣但简单的效果,使用 convert 命令,我在之前的文章中详细讨论过。这涉及到
-edge 选项,然后是 negate
convert DSC_0027.JPG -edge 3 -negate edge3+negate.jpg

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。再次单击以隐藏菜单。
我希望本文对您展示查看图像的新方法有所帮助。在我的下一篇文章中,我将讨论更复杂的图像处理。
2 条评论