在 Linux 上将一堆 BMP 文件转换为 JPEG

Joe*_*Fan 43 linux jpeg bmp conversion

有人给我发了一堆 BMP 文件,我需要它们的 JPEG 格式。我可以使用 GIMP 将它们一一转换,但我宁愿一次性完成。我有 Ubuntu。

hyp*_*lug 61

您可以使用 ImageMagick 的 mogrify 工具

mogrify -format jpg *.bmp

  • 请注意,此答案也适用于 Windows,因为 ImageMagick 也可用于 Windows 下载。 (3认同)

nik*_*nik 20

您很可能在 Ubuntu 上安装了ImageMagick
可以做

convert filename.bmp filename.jpg
Run Code Online (Sandbox Code Playgroud)

更新:

mogrify(通过回答hyperslug和简称cjm)也是一个不错的选择。

使用mogrify程序来调整图像大小、模糊、裁剪、去斑、抖动、绘制、翻转、连接、重新采样等等。
此工具类似于转换,除了原始图像文件会被您请求的任何更改覆盖
(除非您使用该-format选项更改文件后缀)。


小智 8

让我对鲑鱼的回答做一点改动:

for i in `ls *.bmp`; do convert $i $i.jpg; done
Run Code Online (Sandbox Code Playgroud)

以上工作但生成名为“bmp.jpg”的文件。您可以使用以下命令获取 .jpg 文件:

for i in *.bmp; do convert ${i} ${i%bmp}jpg; done
Run Code Online (Sandbox Code Playgroud)

有关命令的man bash详细信息,请参阅for。该${i%bmp}部分表示字符串“${i}”,末尾没有“bmp”子字符串。

还有其他操作可以转换“${i}”中的字符串。“$i”是“${i}”的简写。ls *.bmp鲑鱼答案中的部分表示“执行” ls *.bmp,然后 fori部分将每个由空格分隔的字符串分配给i“。实现相同是*.bmp因为它匹配目录中的所有文件名。

有一个缺点for- 如果您目录中的文件名称中有空格,例如“婚礼图片 1.bmp”,它将被分配 3 次给ivar,执行以下命令:

convert wedding wedding.jpg 
convert picture picture.jpg
convert 1.bmp  1.bmp.jpg
Run Code Online (Sandbox Code Playgroud)

在我的回答中,匹配 "${i%bmp}" 也失败了。

但是有一个解决方案 - 您可以改用该find命令。详情请参阅man find。您应该键入如下内容(请在尝试之前使用手册页检查语法):

find -name *.bmp -type f -exec convert '{}' '{}'.jpg \;
Run Code Online (Sandbox Code Playgroud)

(对名字部分不是很确定,对部分有一些疑问-exec,先看man find

如果您想将所有图像加入一个 .jpg 文件中,您可以将它们与其他过滤器连接起来,如第一个答案中提到的那样。