有人给我发了一堆 BMP 文件,我需要将它们转换为 JPEG。我可以使用 GIMP 逐个转换它们,但我更愿意一次性完成所有转换。我有 Ubuntu。
答案1
您可以使用 ImageMagick 的 mogrify 工具
mogrify -格式 jpg *.bmp
答案2
答案3
让我对 salmonmoose 的回答做一点改动:
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
的详细信息,请参阅。部分表示字符串“${i}”,但不包含末尾的“bmp”子字符串。for
${i%bmp}
还有其他操作可以转换“${i}”中的字符串。“$i”是“${i}”的简写。salmonmoosels *.bmp
答案中的部分表示“执行ls *.bmp
,然后 fori
部分将每个用空格分隔的字符串分配给”。因为它匹配目录中的所有文件名,所以i
实现了相同的效果。*.bmp
有一个缺点for
- 如果目录中的文件名称中有空格,例如“婚礼图片 1.bmp”,它将被分配给 var 3 次i
,执行以下命令:
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 文件中,您可以将它们与其他过滤器连接起来,就像第一个答案中提到的那样。
答案4
使用 Linux 将 .bmp 转换为 .jpg:
for ii in *bmp;do base=`echo $ii|cut -d"." -f1`; convert $ii $base.jpg;done
结果:
foo2.bmp becomes foo2.jpg