批量将 PNG 转换为 JPG 或反之亦然的 4 种方法
在计算中,批处理是在程序中以非交互方式执行一系列任务。本指南将为您提供 4 种简单的方法,使用 Linux 命令行工具将多个 .PNG
图像批量转换为 .JPG
,反之亦然。
我们将在所有示例中使用convert命令行工具,但是,您也可以使用mogrify来实现这一点。
使用convert的语法是:
convert input-option input-file output-option output-file
对于 mogrify 来说是:
mogrify options input-file
注意:使用mogrify时,默认情况下原始图像文件会被新图像文件替换,但可以通过以下方法来防止这种情况发生:使用可以在手册页中找到的某些选项。
如果您想将 .JPG
转换为 ,以下是将所有
,您可以根据需要修改命令。.PNG
图像批量转换为 .JPG
格式的各种方法.PNG
1. 使用“ls”和“xargs”命令将 PNG 转换为 JPG
ls 命令允许您列出所有 png 图像,而 xargs 可以从标准输入构建并执行 convert 命令来转换所有图像.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]
安装Parallel实用程序后,您可以运行以下命令将所有.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循环”命令将PNG转换为JPG
为了避免编写 shell 脚本的麻烦,您可以从命令行执行 for 循环
,如下所示:
----------- 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 循环语句。
- image 变量是目录中图像数量的计数器。
- 对于每个转换操作,echo 命令会通知用户 png 图像已转换为 jpg 格式,反之亦然,在 $image 行转换为 & #36 {image%.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 命令行工具,或者通过下面的评论部分提出问题。