将图像转换为特定的JPG质量

时间:2017-04-11 06:07:50

标签: imagemagick graphicsmagick

我想将图像格式转换为特定质量的JPG

以下命令由于某种原因不起作用,我得到的只是NULL

gm convert -quality 80 '/tmp/phpK31vNK' JPEG:'/tmp/phpK31vNK' && cat '/tmp/phpK31vNK'

但是以下命令工作正常,但graphicsmagick设置默认质量为75

gm convert '/tmp/phpK31vNK' JPEG:'/tmp/phpK31vNK' && cat '/tmp/phpK31vNK'

2 个答案:

答案 0 :(得分:3)

尝试:

gm convert image1 -quality 60 JPEG:image2

但如果image1始终是jpeg,则可以跳过JPEG:规范:

gm convert image1 -quality 60 image2

答案 1 :(得分:2)

如果您在输出cat内容之后不需要输出文件,则可以完全避免创建输出文件,也可以避免对cat进行不必要的额外处理。您只需告诉 GraphicsMagick 创建一个JPEG并将其直接发送到stdout,如下所示:

gm convert input.jpg -quality 80 jpeg:-

我们可以看到它的工作原理是改变质量并计算字节输出,如下所示:

# Low quality => small size
gm convert test.jpg -quality 60 jpeg:- | wc -c
9036

# Higher quality => larger size
gm convert test.jpg -quality 80 jpeg:- | wc -c
11513