2021-05-12 14:32:11
ImageMagick 入門:使用命令列來編輯圖片
了解使用此輕量級影象編輯器檢視和修改影象的常見方法。
在最近一篇關於輕量級影象檢視器的文章中,作者 Scott Nesbitt 提到了 display
,它是 ImageMagick 中的一個元件。ImageMagick 不僅僅是一個影象檢視器,它還提供了大量的影象編輯工具和選項。本教學將詳細介紹如何在 ImageMagick 中使用 display
命令和其他命令列工具。
現在有許多優秀的影象編輯器可用,你可能會想知道為什麼有人會選擇一個非 GUI 的、基於命令列的程式,如 ImageMagick。一方面,它非常可靠。但更大的好處是,它允許你建立一個以特定的方式編輯大量影象的方式。
這篇對於常見的 ImageMagick 命令的介紹應該讓你入門。
display 命令
讓我們從 Scott 提到的命令開始:display
。假設你有一個目錄,其中有很多想要檢視的影象。使用以下命令開始 display
:
cdPictures
display *.JPG
這將按照字母數位順序順序載入你的 JPG 檔案,每張放在一個簡單的視窗中。左鍵單擊影象可以開啟一個簡單的獨立選單(ImageMagick 中唯一的 GUI 功能)。
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
convert DSC_0008.jpg -charcoal 1.2 charcoal_example.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
原始影象位於左上方。在第一個命令中,我使用了一個 -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
這有點極簡主義,但我認為它類似於一種筆墨繪畫,與原始照片有相當顯著的差異。它並不能用於所有圖片。一般來說,它對有銳利線條的影象效果最好。不是焦點的元素可能會消失。注意白鷺圖片中的背景沙灘沒有顯示,因為它是模糊的。同樣注意下船舶圖片,雖然大多數邊緣顯示得非常好,因為沒有顏色,我們失去了圖片的整體形象,所以也許這可以作為一些數位著色,甚至在印後著色的基礎。
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 團隊的成員。
相關閱讀:
利用ImageMagick繪製三基色原理圖 http://www.linuxidc.com/Linux/2012-09/70007.htm
Linux下PHP支援ImageMagick和MagicWandForPHP http://www.linuxidc.com/Linux/2011-01/31539.htm
Linux下用ImageMagick玩影象魔術 http://www.linuxidc.com/Linux/2010-06/26921.htm
Ubuntu 16.04下交叉編譯ImageMagick http://www.linuxidc.com/Linux/2017-09/146714.htm
Linux下ImageMagick和MagicWand For PHP的安裝 http://www.linuxidc.com/Linux/2008-07/14525.htm
Linux下ImageMagick和JMagick的安裝整理 http://www.linuxidc.com/Linux/2008-09/15649.htm
Linux系統上編譯好的ImageMagick遷移到另一台機器 http://www.linuxidc.com/Linux/2017-03/141420.htm
相關文章