4 种方法将 PNG 批量转换为 JPG 以及反之亦然
在计算中,批处理是在程序中非交互地执行一系列任务.PNG
。本指南将为您提供 4 种简单的方法,使用 Linux 命令行工具批量转换多幅图像,.JPG
反之亦然。
我们将在所有示例中使用转换命令行工具,但是您也可以使用mogrify来实现这一点。
使用convert 的语法是:
$ convert input-option input-file output-option output-file
对于mogrify来说:
$ mogrify options input-file
注意:使用mogrify时,原始图像文件默认会被新图像文件替换,但可以使用手册页中的某些选项来防止这种情况。
.PNG
下面是批量将所有图像转换为格式的各种方法.JPG
,如果您想转换.JPG
为.PNG
,您可以根据需要修改命令。
1. 使用 'ls' 和 'xargs' 命令将 PNG 转换为 JPG
ls 命令允许您列出所有png图像,xargs可以从标准输入构建和执行转换.png
命令,将所有图像转换为.jpg
.
----------- Convert PNG to JPG ----------- $ ls -1 *.png | xargs -n 1 bash -c 'convert "$0" "${0%.png}.jpg"' ----------- Convert JPG to PNG ----------- $ ls -1 *.jpg | xargs -n 1 bash -c 'convert "$0" "${0%.jpg}.png"'
关于上述命令中使用的选项的解释。
-1
– 标志告诉ls每行列出一张图片。-n
– 指定参数的最大数量,对于案例,为1 。-c
– 指示 bash 运行给定的命令。${0%.png}.jpg
– 设置新转换图像的名称,%符号有助于删除旧的文件扩展名。
我使用ls -ltr
命令按修改日期和时间列出所有文件。
类似地,您可以通过调整上述命令来使用上述命令将所有.jpg
图像转换为。.png
2. 使用 GNU Parallel 命令将 PNG 转换为 JPG
GNU Parallel允许用户并行构建和执行来自标准输入的 shell 命令。请确保您的系统上安装了 GNU Parallel,否则请使用以下相应命令进行安装:
$ sudo apt-get install parallel [On Debian/Ubuntu systems] $ sudo yum install parallel [On RHEL/CentOS and Fedora]
一旦安装了并行实用程序,您可以运行以下命令将所有.png
图像转换.jpg
为标准输入的格式。
----------- Convert PNG to JPG ----------- $ parallel convert '{}' '{.}.jpg' ::: *.png ----------- Convert JPG to PNG ----------- $ parallel convert '{}' '{.}.png' ::: *.jpg
在哪里,
{}
– 输入行,它是用从输入源读取的完整行替换的替换字符串。{.}
– 输入线减去延伸线。:::
– 指定输入源,即上面示例中的命令行,其中*png或*jpg是参数。
或者,您也可以使用 ls 和parallel命令来批量转换所有图像,如下所示:
----------- Convert PNG to JPG ----------- $ ls -1 *.png | parallel convert '{}' '{.}.jpg' ----------- Convert JPG to PNG ----------- $ ls -1 *.jpg | parallel convert '{}' '{.}.png'
3. 使用“for loop”命令将 PNG 转换为 JPG
为了避免编写 shell 脚本的麻烦,您可以for loop
从命令行执行如下操作:
----------- Convert PNG to JPG ----------- $ bash -c 'for image in *.png; do convert "$image" "${image%.png}.jpg"; echo “image $image converted to ${image%.png}.jpg ”; done' ----------- Convert JPG to PNG ----------- $ bash -c 'for image in *.jpg; do convert "$image" "${image%.jpg}.png"; echo “image $image converted to ${image%.jpg}.png ”; done'
上述命令中使用的每个选项的说明:
- -c允许在单引号中执行 for 循环语句。
- 图像变量是目录中图像数量的计数器。
- 对于每次转换操作,echo 命令都会在行“$image convert to ${image%.png}.jpg ”中通知用户 png 图像已转换为jpg格式,反之亦然。
- “${image%.png}.jpg”创建转换后图像的名称,其中%删除旧图像格式的扩展名。
4.使用 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.sh
并使脚本可执行,然后从包含图像的目录中运行它。
$ chmod +x convert.sh $ ./convert.sh
总之,我们介绍了一些批量转换.png
图像.jpg
格式和反之亦然的重要方法。如果您想优化图像,可以阅读我们的指南,其中介绍了如何在 Linux 中压缩 png 和 jpg 图像。
您也可以与我们分享任何其他方法,包括用于在终端上将图像从一种格式转换为另一种格式的 Linux 命令行工具,或者通过下面的评论部分提出问题。