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


32

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

Answers:


46

您可以使用ImageMagick的移动工具

mogrify -format jpg * .bmp

1
请注意,这个答案也适用于Windows,因为ImageMagick也可以下载用于Windows。
Gnoupi

sudo apt install imagemagick在Ubuntu上,您可以通过添加-quality 100
mpen

15

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

convert filename.bmp filename.jpg

更新:

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

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


1
ImageMagick的mogrify命令比convert更好,因为它可以很容易地与通配符一起使用。请参阅hyperslug的答案。
cjm

7

让我对鲑鱼驼鹿做一些改动:

for i in `ls *.bmp`; do convert $i $i.jpg; done

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

for i in *.bmp; do convert ${i} ${i%bmp}jpg; done

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

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

有一个缺点for-如果目录中的文件名中带有空格,例如“ wedding picture 1.bmp”,则将其分配给ivar 3次,执行以下命令:

convert wedding wedding.jpg 
convert picture picture.jpg
convert 1.bmp  1.bmp.jpg

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

但是有一个解决方案-您可以改用find命令。有关man find详细信息,请参见。您应该输入类似以下内容(请在尝试使用手册页之前检查语法):

find -name *.bmp -type f -exec convert '{}' '{}'.jpg \;

(我不太确定名称部分,对此-exec部分我有疑问,请man find首先参阅)

如果要将所有图像合并到一个.jpg文件中,则可以将它们与其他过滤器连接起来,如第一个答案中所述。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.