導讀 | 計算機術語中,批處理指的是用一個非交互式的程序來執行一序列的任務的方法。這篇教程裏,咱們會使用 Linux 命令行工具,並提供 4 種簡單的處理方式來把一些.PNG格式的圖像批量轉換成.JPG格式的,以及轉換回來。 |
雖然全部示例中咱們使用的都是 convert命令行工具,可是您也可使用 mogrify 命令來達到一樣的效果。
convert 命令的語法以下:html
$ convert 輸入選項 輸入文件 輸出選項 輸出文件
mogrify的爲:linux
$ mogrify 選項 輸入文件
注意:在使用mogrify命令時,默認狀況下源圖像文件會被轉換後的新文件覆蓋掉,您可使用明確的操做選項來禁止覆蓋,具體的選項能夠在手冊頁中查詢獲得。
下面是把全部.PNG 格式圖像批量轉換爲.JPG 格式的各類實現方式。若是想把.JPG轉換爲.PNG 格式,也可以使用這些命令,按需修改。shell
內容操做以下:bash
一、 使用 ls和 xargs命令來轉換 PNG 和 JPG工具
ls 命令 能夠列出全部的 png 圖像文件,xargs使得能夠從標準輸入構建和執行convert命令,從而將全部.png圖像轉換爲.jpg 圖像。命令行
----------- 從 PNG 轉換到 JPG ----------- $ ls -1 *.png | xargs -n 1 bash -c 'convert "$0" "${0%.png}.jpg"' ----------- 從 JPG 轉換到 PNG ----------- $ ls -1 *.jpg | xargs -n 1 bash -c 'convert "$0" "${0%.jpg}.png"'
關於上面命令選項的說明:htm
-1 -告訴 ls 每行列出一個圖像名稱的選項標識 -n – 指定最多參數個數,例子中爲 1 -c – 指示 bash 運行給定的命令 ${0%.png}.jpg – 設置新轉換的圖像文件的名字,% 符號用來刪除源文件的擴展名
Linux 中 PNG 格式轉爲 JPG 格式
我使用ls -ltr命令按修改的日期和時間列出全部文件。
相似的,也可使用上面的命令要把.JPG圖像轉換爲.PNG 格式,只需稍微調整就行。教程
二、 使用 GNU 的parallel命令來轉換 PNG 和 JPGget
GNU 的 parallel 使用戶可以從標準輸入並行構建和執行 shell 命令。確保您的系統上安裝了 GNU Parallel,不然請使用如下適當的命令進行安裝:it
$ sudo apt-get install parallel [在 Debian/Ubuntu 系統中] $ sudo yum install parallel [在 RHEL/CentOS 和 Fedora 系統中]
安裝好parallel工具後,您就能夠運行下面的命令來把全部從標準輸入的.PNG 圖像轉換成 .JPG格式的圖像。
----------- 從 PNG 轉換到 JPG ----------- $ parallel convert '{}' '{.}.jpg' ::: *.png ----------- 從 JPG 轉換到 PNG ----------- $ parallel convert '{}' '{.}.png' ::: *.jpg
其中:
{} – 輸入行替代符,代替了從輸入源讀取的完整行。 {.} – 去除擴展名的輸入行。 ::: – 指定輸入源的符號,即上面示例的命令行,在這裏 png 或 jpg 是命令參數。
Parallel 命令 – 把全部 PNG 圖像轉換爲 JPG 格式
或者,您也能夠結合 ls 和parallel命令來批量轉換全部圖像,如圖所示:
----------- 從 PNG 轉換到 JPG ----------- $ ls -1 *.png | parallel convert '{}' '{.}.jpg' ----------- 從 JPG 轉換到 PNG ----------- $ ls -1 *.jpg | parallel convert '{}' '{.}.png'
三、 使用for循環命令來轉換 PNG 和 JPG
爲了不編寫 shell 腳本的繁瑣,你能夠從命令行執行 for循環語句,以下所示:
----------- 從 PNG 轉換到 JPG ----------- $ bash -c 'for image in *.png; do convert "$image" "${image%.png}.jpg"; echo 「image $image converted to ${image%.png}.jpg 」; done' ----------- 從 JPG 轉換到 PNG ----------- $ bash -c 'for image in *.jpg; do convert "$image" "${image%.jpg}.png"; echo 「image $image converted to ${image%.jpg}.png 」; done'
對上面的命令所使用的選項參數的描述:
-c 容許執行包括在單引號中的循環語句。 image 變量是目錄中的圖像名的數量記數器。 對於每一個轉換操做,在 $image 轉換爲 ${image%.png}.jpg 這行中,echo 命令通知用戶 png 圖像已經轉換爲 jpg 格式,反之亦然。 ${image%.png}.jpg 語句建立了轉換後的圖像名字,其中 % 表示去除源圖像文件的擴展名。
for 循環語句 – 從 PNG 轉換到 JPG 格式
四、 使用 Shell 腳原本轉換 PNG 和 JPG
若是你不想像前面的例子那樣讓你的命令行變得邋遢的話,能夠寫一個小腳本,以下所示:
注意:適當地交換 .png 和 .jpg擴展名,以下面的例子所示,從一種格式轉換到另外一種格式:
#!/bin/bash #convert for image in *.png; do convert "$image" "${image%.png}.jpg" echo 「image $image converted to ${image%.png}.jpg 」 done exit 0
把上面的腳本保存爲convert.shconvert.sh文件,而後使此腳本文件可執行,接着從存有圖像文件的目錄下執行。
$ chmod +x convert.sh $ ./convert.sh
使用 Shell 腳原本批量圖像轉換
總之,咱們介紹了一些重要的將.PNG圖像批量轉換爲 .JPG格式的方法,以及再轉回來。