将所有非 JPG 图像转换为 JPG

将所有非 JPG 图像转换为 JPG

我可以使用什么命令将文件夹中非 JPG(主要是 PNG 和 BMP)的所有图像转换为 JPG?我还希望转换质量为 100%。我希望用转换后的图像来替换原始图像。

答案1

假设该文件夹中只有图像,您可以

ls | grep -v jpg$

获取所有不以 结尾的文件名jpg,我认为这是您要转换的所有图像。然后您可以使用该convert工具图像魔术师像这样

ls | grep -v jpg$ | while IFS= read -r FILENAME
do
    convert "${FILENAME}" "${FILENAME%.*}.jpg"
done

convert命令扩展为convert <file name as printed by ls> <file name without extention>.jpg.扩展名jpg会告诉convert您转换为 jpg 格式。

答案2

要转换当前目录中的所有 和 然后删除原始文件.png.bmp

mogrify -format jpg -quality 100 ./*.{png,bmp}
rm ./*.{png,bmp}

如果您的 shell 支持扩展通配符,则要转换除 之外的所有文件.jpg,例如bash

shopt extglob
mogrify -format jpg -quality 100 ./*.!(jpg)
rm ./*.!(jpg)

或者zsh

setopt extended_glob
mogrify -format jpg -quality 100 ./^*.jpg
rm ./^*.jpg

递归:

find . -type f ! -name '*.jpg' -exec \
mogrify -format jpg -quality 100 {} + -exec rm {} +

答案3

我使用 XNView CLI 程序找到了进一步的解决方案转换这是安装教程适用于 Linux 的 nConvert。

以下 nConvert 命令将把任何图像格式转换为 jpg,rm 命令将删除所有 bmp 和 png 文件:

nconvert -out jpeg -o output-##.jpg *.* && rm ./*.{png,bmp}

相关内容