在 Linux 下將 PNG 和 JPG 批量互轉的四種方法

導讀 計算機術語中,批處理指的是用一個非交互式的程序來執行一序列的任務的方法。這篇教程裏,咱們會使用 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 批量互轉的四種方法在 Linux 下將 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 是命令參數。

在 Linux 下將 PNG 和 JPG 批量互轉的四種方法在 Linux 下將 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 語句建立了轉換後的圖像名字,其中 % 表示去除源圖像文件的擴展名。

在 Linux 下將 PNG 和 JPG 批量互轉的四種方法在 Linux 下將 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

在 Linux 下將 PNG 和 JPG 批量互轉的四種方法在 Linux 下將 PNG 和 JPG 批量互轉的四種方法
使用 Shell 腳原本批量圖像轉換
總之,咱們介紹了一些重要的將.PNG圖像批量轉換爲 .JPG格式的方法,以及再轉回來。

原文來自:https://linux.cn/article-8014-1.html

本文地址:http://www.linuxprobe.com/linux-jpg-png.html

相關文章
相關標籤/搜索