ImageMagick的一些高級(jí)圖片查看技巧
用這些 ImageMagick 命令行圖像編輯應(yīng)用的技巧更好的管理你的數(shù)碼照片集。
在我先前的ImageMagick 入門(mén):使用命令行來(lái)編輯圖片 文章中,我展示了如何使用 ImageMagick 的菜單欄進(jìn)行圖片的編輯和變換風(fēng)格。在這篇續(xù)文里,我將向你展示使用這個(gè)開(kāi)源的圖像編輯器來(lái)查看圖片的另外方法。
別樣的風(fēng)格
在深入 ImageMagick 的高級(jí)圖片查看技巧之前,我想先分享另一個(gè)使用 convert
達(dá)到的有趣但簡(jiǎn)單的效果,在上一篇文章中我已經(jīng)詳細(xì)地介紹了 convert
命令,這個(gè)技巧涉及這個(gè)命令的 edge
和 negate
選項(xiàng):
convert DSC_0027.JPG -edge 3 -negate edge3+negate.jpg
使用edge
和 negate
選項(xiàng)前后的圖片對(duì)比
這些使我更喜愛(ài)編輯后的圖片:海的外觀,作為前景和背景的植被,特別是太陽(yáng)及其在海上的反射,***是天空。
使用 display 來(lái)查看一系列圖片
假如你跟我一樣是個(gè)命令行用戶(hù),你就知道 shell 為復(fù)雜任務(wù)提供了更多的靈活性和快捷方法。下面我將展示一個(gè)例子來(lái)佐證這個(gè)觀點(diǎn)。ImageMagick 的 display
命令可以克服我在 GNOME 桌面上使用 Shotwell 圖像管理器導(dǎo)入圖片時(shí)遇到的問(wèn)題。
Shotwell 會(huì)根據(jù)每張導(dǎo)入圖片的 Exif 數(shù)據(jù),創(chuàng)建以圖片被生成或者拍攝時(shí)的日期為名稱(chēng)的目錄結(jié)構(gòu)。最終的效果是最上層的目錄以年命名,接著的子目錄是以月命名 (01、 02、 03 等等),然后是以每月的日期命名的子目錄。我喜歡這種結(jié)構(gòu),因?yàn)楫?dāng)我想根據(jù)圖片被創(chuàng)建或者拍攝時(shí)的日期來(lái)查找它們時(shí)將會(huì)非常方便。
但這種結(jié)構(gòu)也并不是非常***的,當(dāng)我想查看最近幾個(gè)月或者最近一年的所有圖片時(shí)就會(huì)很麻煩。使用常規(guī)的圖片查看器,我將不停地在不同層級(jí)的目錄間跳轉(zhuǎn),但 ImageMagick 的 display
命令可以使得查看更加簡(jiǎn)單。例如,假如我想查看最近一年的圖片,我便可以在命令行中鍵入下面的 display
命令:
display -resize 35% 2017/*/*/*.JPG
我可以一個(gè)月又一個(gè)月,一天又一天地遍歷這一年。
現(xiàn)在假如我想查看某張圖片,但我不確定我是在 2016 年的上半年還是在 2017 的上半年拍攝的,那么我便可以使用下面的命令來(lái)找到它:
display -resize 35% 201[6-7]/0[1-6]/*/*.JPG
這限制查看的圖片拍攝于 2016 和 2017 年的一月到六月
使用 montage 來(lái)查看圖片的縮略圖
假如現(xiàn)在我要查找一張我想要編輯的圖片,使用 display
的一個(gè)問(wèn)題是它只會(huì)顯示每張圖片的文件名,而不顯示其在目錄結(jié)構(gòu)中的位置,所以想要找到那張圖片并不容易。另外,假如我很偶然地在從相機(jī)下載圖片的過(guò)程中將這些圖片從相機(jī)的內(nèi)存里面清除了它們,結(jié)果使得下次拍攝照片的名稱(chēng)又從 DSC_0001.jpg
開(kāi)始命名,那么當(dāng)使用 display
來(lái)展示一整年的圖片時(shí),將會(huì)在這 12 個(gè)月的圖片中花費(fèi)很長(zhǎng)的時(shí)間來(lái)查找它們。
這時(shí) montage
命令便可以派上用場(chǎng)了。它可以將一系列的圖片縮略圖放在一張圖片中,這樣就會(huì)非常有用。例如可以使用下面的命令來(lái)完成上面的任務(wù):
montage -label %d/%f -title 2017 -tile 5x -resize 10% -geometry +4+4 2017/0[1-4]/*/*.JPG 2017JanApr.jpg
從左到右,這個(gè)命令以標(biāo)簽開(kāi)頭,標(biāo)簽的形式是包含文件名(%f
)和以 /
分割的目錄(%d
)結(jié)構(gòu),接著這個(gè)命令以目錄的名稱(chēng)(2017)來(lái)作為標(biāo)題,然后將圖片排成 5 列,每個(gè)圖片縮放為 10% (這個(gè)參數(shù)可以很好地匹配我的屏幕)。geometry
的設(shè)定將在每張圖片的四周留白,***指定那些圖片要包括到這張合成圖片中,以及一個(gè)合適的文件名稱(chēng)(2017JanApr.jpg
)。現(xiàn)在圖片 2017JanApr.jpg
便可以成為一個(gè)索引,使得我可以不時(shí)地使用它來(lái)查看這個(gè)時(shí)期的所有圖片。
注意內(nèi)存消耗
你可能會(huì)好奇為什么我在上面的合成圖中只特別指定了為期 4 個(gè)月(從一月到四月)的圖片。因?yàn)?montage
將會(huì)消耗大量?jī)?nèi)存,所以你需要多加注意。我的相機(jī)產(chǎn)生的圖片每張大約有 2.5MB,我發(fā)現(xiàn)我的系統(tǒng)可以很輕松地處理 60 張圖片。但一旦圖片增加到 80 張,如果此時(shí)還有另外的程序(例如 Firefox 、Thunderbird)在后臺(tái)工作,那么我的電腦將會(huì)死機(jī),這似乎和內(nèi)存使用相關(guān),montage
可能會(huì)占用可用 RAM 的 80% 乃至更多(你可以在此期間運(yùn)行 top
命令來(lái)查看內(nèi)存占用)。假如我關(guān)掉其他的程序,我便可以在我的系統(tǒng)死機(jī)前處理 80 張圖片。
下面的命令可以讓你知曉在你運(yùn)行 montage
命令前你需要處理圖片張數(shù):
ls 2017/0[1-4/*/*.JPG > filelist; wc -l filelist
ls
命令生成我們搜索的文件的列表,然后通過(guò)重定向?qū)⑦@個(gè)列表保存在任意以名為 filelist
的文件中。接著帶有 -l
選項(xiàng)的 wc
命令輸出該列表文件共有多少行,換句話(huà)說(shuō),展示出了需要處理的文件個(gè)數(shù)。下面是我運(yùn)行命令后的輸出:
163 filelist
啊呀!從一月到四月我居然有 163 張圖片,使用這些圖片來(lái)創(chuàng)建一張合成圖一定會(huì)使得我的系統(tǒng)死機(jī)的。我需要將這個(gè)列表減少點(diǎn),可能只處理到 3 月份或者更早的圖片。但如果我在 4 月 20 號(hào)到 30 號(hào)期間拍攝了很多照片,我想這便是問(wèn)題的所在。下面的命令便可以幫助指出這個(gè)問(wèn)題:
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
上面一行中共有 4 個(gè)命令,它們以分號(hào)分隔。***個(gè)命令特別指定從一月到三月期間拍攝的照片;第二個(gè)命令使用 >>
將拍攝于 4 月 1 日至 9 日的照片追加到這個(gè)列表文件中;第三個(gè)命令將拍攝于 4 月 10 日到 19 日的照片追加到列表中。最終它的顯示結(jié)果為:
81 filelist
我知道假如我關(guān)掉其他的程序,處理 81 張圖片是可行的。
使用 montage
來(lái)處理它們是很簡(jiǎn)單的,因?yàn)槲覀冎恍枰獙⑸厦嫠龅奶幚硖砑拥?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
命令后面***的那個(gè)文件名將會(huì)作為輸出,在它之前的都是輸入。這個(gè)命令將花費(fèi)大約 3 分鐘來(lái)運(yùn)行,并生成一張大小約為 2.5MB 的圖片,但我的系統(tǒng)只是有一點(diǎn)反應(yīng)遲鈍而已。
展示合成圖片
當(dāng)你***次使用 display
查看一張巨大的合成圖片時(shí),你將看到合成圖的寬度很合適,但圖片的高度被壓縮了,以便和屏幕相適應(yīng)。不要慌,只需要左擊圖片,然后選擇 View > Original Size
便會(huì)顯示整個(gè)圖片。再次點(diǎn)擊圖片便可以使菜單欄隱藏。
我希望這篇文章可以在你使用新方法查看圖片時(shí)幫助你。在我的下一篇文章中,我將討論更加復(fù)雜的圖片操作技巧。