如何“保存为网络” JPG图像

时间:2019-06-25 12:48:04

标签: ffmpeg

我有8mp +的高质量图像,并且需要在不降低质量的前提下尽可能减小它们的尺寸。 Photoshop和类似的软件具有“保存为网络”功能,效果很好。

如何使用ffmpeg完成此操作?图片是JPG

实际上,我需要从中心裁剪图像。

如此

原始图像:1200x800,质量:出色 ->裁剪图像:距原始图像中心300x300,质量:出色 ---->保存为网络裁剪图像,质量:保存为网络

我需要运行什么ffmpeg命令?

2 个答案:

答案 0 :(得分:0)

您需要使用-q:v标志来指定质量设置,该标志采用从1(最好,最大)到31(最坏,最小)的数字参数。

ffmpeg -i <input> -q:v 8 <output.jpg>

由您决定哪种质量设置是“足够好”和“足够小”。

有关附录的问题,请参见http://ffmpeg.org/ffmpeg-filters.html#crop

答案 1 :(得分:0)

JPEG质量

-q:v

请参见How can I extract a good quality JPEG image from an H264 video file with ffmpeg?中的-q:v选项

优化

确保您使用的是最新的ffmpeg,默认情况下将启用霍夫曼优化。这样可以减小文件大小。请参见ffmpeg -h encoder=mjpeg并查找-huffman选项,以查看您的版本是否支持此功能。

或者,霍夫曼优化可以由jpegtran执行:

jpegtran -optimize -copy none -perfect input.jpg > output.jpg

像素格式

我猜想Photoshop的“另存为Web”仅输出yuvj420p像素格式,而ffmpeg将选择与输入像素格式最接近的像素格式(yuvj420p,yuvj422p或yuvj444p)。您可以使用format filter强制yuvj420p。这样可以减小文件的大小,但在某些区域也可能使伪影更加突出,但您可能不会注意到其中的区别。

作物过滤器

使用crop filter。默认设置为使作物居中,因此只需使用-vf crop=300:300

示例命令

ffmpeg -i input -vf "crop=300:300,format=yuvj420p" -q:v 3 -frames:v 1 output.jpg