Home  >  Article  >  System Tutorial  >  Seamlessly convert JPG and PNG formats under Linux to make your image processing easier

Seamlessly convert JPG and PNG formats under Linux to make your image processing easier

WBOY
WBOYforward
2024-02-13 13:30:121020browse

在日常工作和生活中,我们经常需要处理各种类型的图片。而对于Linux系统用户来说,可能需要将一些JPG格式的图片转换为PNG格式,或者将PNG格式的图片转换为JPG格式。这是一个非常常见的需求,但是如何在Linux系统下进行转换呢?在本文中,我们将为你介绍Linux下无缝转换JPG和PNG格式的方法,让你的图片处理更加轻松。

虽然所有示例中我们使用的都是 convert命令行工具,但是您也可以使用 mogrify 命令来达到同样的效果。
convert 命令的语法如下:

$ convert 输入选项 输入文件 输出选项 输出文件

mogrify的为:

$ mogrify 选项 输入文件

注意:在使用mogrify命令时,默认情况下源图像文件会被转换后的新文件覆盖掉,您可以使用明确的操作选项来禁止覆盖,具体的选项可以在手册页中查询得到。
下面是把所有.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 – 设置新转换的图像文件的名字,% 符号用来删除源文件的扩展名

Seamlessly convert JPG and PNG formats under Linux to make your image processing easier
Linux 中 PNG 格式转为 JPG 格式
我使用ls -ltr命令按修改的日期和时间列出所有文件。
类似的,也可以使用上面的命令要把.JPG图像转换为.PNG 格式,只需稍微调整就行。

2、 使用 GNU 的parallel命令来转换 PNG 和 JPG

GNU 的 parallel 使用户能够从标准输入并行构建和执行 shell 命令。确保您的系统上安装了 GNU Parallel,否则请使用以下适当的命令进行安装:

$ 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 是命令参数。

Seamlessly convert JPG and PNG formats under Linux to make your image processing easier
Parallel 命令 – 把所有 PNG 图像转换为 JPG 格式
或者,您也可以结合 ls 和parallel命令来批量转换所有图像,如图所示:

----------- 从 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 语句创建了转换后的图像名字,其中 % 表示去除源图像文件的扩展名。
Seamlessly convert JPG and PNG formats under Linux to make your image processing easier

for 循环语句 – 从 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.shconvert.sh文件,然后使此脚本文件可执行,接着从存有图像文件的目录下执行。

$ chmod +x convert.sh
$ ./convert.sh

Seamlessly convert JPG and PNG formats under Linux to make your image processing easier
使用 Shell 脚本来批量图像转换
总之,我们介绍了一些重要的将.PNG图像批量转换为 .JPG格式的方法,以及再转回来。

本文介绍了在Linux下无缝转换JPG和PNG格式的多种方法,包括使用命令行工具和图形界面工具。无论你是新手还是Linux系统专家,都可以根据自己的需求选择最适合的方法进行转换。使用这些方法可以让你在处理图片时更加方便快捷,提高工作效率。如果你还不熟悉这些方法,不妨花一些时间学习并应用它们,相信你一定会有更好的体验。

The above is the detailed content of Seamlessly convert JPG and PNG formats under Linux to make your image processing easier. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:lxlinux.net. If there is any infringement, please contact admin@php.cn delete