Linux中國

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 顯示當前工作目錄中的所有文件(而不僅僅是圖像)。如果要滾動顯示所有選定的圖像,你可以使用 NextFormer,但使用鍵盤快捷鍵(下一張圖像用空格鍵,上一張圖像用退格)更容易。
  • 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

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國

    Linux中國

    DevOps 將去向何方?

    微軟、谷歌、亞馬遜、IBM 和甲骨文如今都在關注云上的 DevOps。這些大公司正在給企業提供 IT 自動化的服務。然而,DevOps 仍然在持續的演進中。DevSecOps、AIOps 和 NoOps 正在成為下一個流行詞。