ImageMagick 入門:使用命令行來編輯圖片
在最近一篇關於輕量級圖像查看器的文章中,作者 Scott Nesbitt 提到了 display
,它是 ImageMagick 中的一個組件。ImageMagick 不僅僅是一個圖像查看器,它還提供了大量的圖像編輯工具和選項。本教程將詳細介紹如何在 ImageMagick 中使用 display
命令和其他命令行工具。
現在有許多優秀的圖像編輯器可用,你可能會想知道為什麼有人會選擇一個非 GUI 的、基於命令行的程序,如 ImageMagick。一方面,它非常可靠。但更大的好處是,它允許你建立一個以特定的方式編輯大量圖像的方式。
這篇對於常見的 ImageMagick 命令的介紹應該讓你入門。
display 命令
讓我們從 Scott 提到的命令開始:display
。假設你有一個目錄,其中有很多想要查看的圖像。使用以下命令開始 display
:
cd Pictures
display *.JPG
這將按照字母數字順序順序載入你的 JPG 文件,每張放在一個簡單的窗口中。左鍵單擊圖像可以打開一個簡單的獨立菜單(ImageMagick 中唯一的 GUI 功能)。
![display menu](/data/attachment/album/201709/08/132946bhqvih5wqtygfoiz.png "display menu")
你可以在 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、Normalize、Equalize、Negate、Grayscale、Map 和 Quantize。這些是用於顏色和調整亮度和對比度的操作。
- 效果 有 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。 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](/data/attachment/album/201709/08/132948t2lt12m32tzmi2tl.jpg "monochrome example")
convert DSC_0008.jpg -charcoal 1.2 charcoal_example.jpg
![charcoal example](/data/attachment/album/201709/08/133000zpvpxvd6crz4wzxp.jpg "charcoal example")
-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](/data/attachment/album/201709/08/133007rc9wcc7icbzr92l8.jpg "edge and reduced colors example")
原始圖像位於左上方。在第一個命令中,我使用了一個 -edge
選項,設置為 3(見右上角的圖像) - 對於我的喜好而言小於它的數字都太精細了。在第二個命令(左下角的圖像)中,我們將顏色的數量減少到了 4 個,與原來沒有什麼不同。但是看看當我們在第三個命令中組合這兩個時,會發生什麼(右下角的圖像)!也許這有點大膽,但誰能預期到從原始圖像或任何一個選項變成這個結果?
-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](/data/attachment/album/201709/08/133015u3k90x69kz50jkk0.jpg "canny demo")
這有點極簡主義,但我認為它類似於一種筆墨繪畫,與原始照片有相當顯著的差異。它並不能用於所有圖片。一般來說,它對有銳利線條的圖像效果最好。不是焦點的元素可能會消失。注意白鷺圖片中的背景沙灘沒有顯示,因為它是模糊的。同樣注意下船舶圖片,雖然大多數邊緣顯示得非常好,因為沒有顏色,我們失去了圖片的整體形象,所以也許這可以作為一些數字著色,甚至在印後著色的基礎。
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
的例子中,我對 4 張圖像進行了蒙太奇操作。我添加了 -tile
選項,確切地說是 -tile 2x
,它創建了有兩列的蒙太奇。我可以指定一個 matrix
、-tile 2x2
或 -tile x2
來產生相同的結果。
ImageMagick 還有更多可以了解,所以我打算寫更多關於它的文章,甚至可能使用 Perl 腳本運行 ImageMagick 命令。ImageMagick 具有豐富的文檔,儘管該網站在示例或者顯示結果上還不足,我認為最好的學習方式是通過實驗和更改各種設置和選項來學習。
(題圖: opensource.com)
作者簡介:
Greg Pittman - Greg 是肯塔基州路易斯維爾的一名退休的神經科醫生,對計算機和程序設計有著長期的興趣,從 1960 年代的 Fortran IV 開始。當 Linux 和開源軟體相繼出現時,他開始學習更多,並最終做出貢獻。他是 Scribus 團隊的成員。
via: https://opensource.com/article/17/8/imagemagick
作者:Greg Pittman 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive