我们可以使用Linux命令行工具将.PNG格式的图象批量转换成.JPG格式,下边将和你们分享4种方式。
其实所有示例中我们使用的都是convert命令行工具,而且您也可以使用mogrify命令来达到同样的疗效。
convert命令的句型如下:
$ convert 输入选项 输入文件 输出选项 输出文件
而mogrify的为:
$ mogrify 选项 输入文件
注意:在使用mogrify命令时linux 文件格式转换linux操作系统好吗,默认情况下源图象文件会被转换后的新文件覆盖掉,您可以使用明晰的操作选项来严禁覆盖linux 文件格式转换,具体的选项可以在指南页中查询得到。
下边是把所有.PNG格式图象批量转换为.JPG格式的各类实现方法。假如想把.JPG转换为.PNG格式,也可使用这种命令,按需更改。
1、使用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"'
关于里面命令选项的说明:
-1–告诉ls每行列出一个图象名称的选项标示-n–指定最多参数个数,反例中为1-c–指示bash运行给定的命令${0%.png}.jpg–设置新转换的图象文件的名子,%符号拿来删掉源文件的扩充名
Linux中PNG格式转为JPG格式
我使用ls-ltr命令按更改的日期和时间列举所有文件。
类似的,也可以使用前面的命令要把.JPG图象转换为.PNG格式,只需稍为调整就行。
2、使用GNU的parallel命令来转换PNG和JPG
GNU的parallel使用户就能从标准输入并行建立和执行shell命令。确保您的系统上安装了GNUParallel,否则请使用以下适当的命令进行安装:
$ 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命令来批量转换所有图象linux系统官网,如图所示:
----------- 从 PNG 转换到 JPG ----------- $ ls -1 *.png | parallel convert '{}' '{.}.jpg'----------- 从 JPG 转换到 PNG -----------$ ls -1 *.jpg | parallel convert '{}' '{.}.png'
3、使用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格式
4、使用Shell脚本来转换PNG和JPG
假如你不想象后面的事例那样让你的命令行显得邋遢的话,可以写一个小脚本,如下所示:
注意:适当地交换.png和.jpg扩充名,如下边的事例所示,从一种格式转换到另一种格式:
#!/bin/bash#convertfor image in *.png; do convert "$image" "${image%.png}.jpg" echo “image $image converted to ${image%.png}.jpg ”doneexit 0
把里面的脚本保存为convert.sh文件,之后使此脚本文件可执行,接着从存有图象文件的目录下执行。
$ chmod +x convert.sh$ ./convert.sh
使用Shell脚本来批量图象转换
您可以给我们分享一些包括Linux命令行工具在内的把图象从一种格式转成另一种格式的形式技巧,或则在下边的评论部份畅所欲言。
关于Linux系统上将PNG和JPG批量互转的方式你们还有哪些更好的方式吗?你们可以在评论区畅所欲言。