网站搜索

批量将 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. -1 – 标志告诉 ls 每行列出一张图像。
  2. -n – 指定参数的最大数量,在这种情况下为 1
  3. -c – 指示 bash 运行给定的命令。
  4. $ {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

在哪里,

  1. {} – 输入行,是由从输入源读取的完整行替换的替换字符串。
  2. {.} – 输入行减去扩展名。
  3. ::: – 指定输入源,即上面示例的命令行,其中 *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'

上述命令中使用的每个选项的说明:

  1. -c 允许在单引号中执行 for 循环语句。
  2. image 变量是目录中图像数量的计数器。
  3. 对于每个转换操作,echo 命令会通知用户 png 图像已转换为 jpg 格式,反之亦然,在 $image 行转换为 & #36 {image%.png}.jpg”。
  4. “$ {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 命令行工具,或者通过下面的评论部分提出问题。