Imagemagick webp格式比JPEG格式更有效吗?

Imagemagick webp格式比JPEG格式更有效吗?,imagemagick,jpeg,webp,Imagemagick,Jpeg,Webp,我正在尝试压缩和调整DSLR相机照片的大小。但到目前为止,我的观察结果是,当webp文件大小比JPEG小约30%时,webp的质量会明显下降 用于使用imagemagick生成webp的命令: 转换1.JPG-条带-质量80-调整大小800-定义 webp:method=6.1.webp 我的目标是使webp格式的文件大小至少比JPEG小20%,而JPEG和webp之间的质量几乎没有差别。 这是可以实现的,还是没有免费午餐?更新自从最初发布以来,我发现使用压缩程序比ImageMagik 6.7.

我正在尝试压缩和调整DSLR相机照片的大小。但到目前为止,我的观察结果是,当webp文件大小比JPEG小约30%时,webp的质量会明显下降

用于使用imagemagick生成webp的命令:

转换1.JPG-条带-质量80-调整大小800-定义 webp:method=6.1.webp

我的目标是使webp格式的文件大小至少比JPEG小20%,而JPEG和webp之间的质量几乎没有差别。
这是可以实现的,还是没有免费午餐?

更新自从最初发布以来,我发现使用压缩程序比ImageMagik 6.7.8大大提高了压缩性能,这是我最初测试的动力。与PNG相比,具有透明度的图像尤其如此。使用mac版本的
webp
命令(在引擎盖下使用cwebp)的文件大约是使用ImageMagik压缩的同一文件大小的1/4,确实提供了显著的性能提升


据谷歌称,“WebP通常比JPG平均多压缩30%”,其视觉质量与JPG相似。然而,正如你所说,从来没有免费的午餐

质量 质量在很大程度上是一个主观的衡量标准,但请记住,您正在比较一个压缩质量为80的文件和一个没有压缩级别的文件(至少,这是我从您的问题中了解到的)。仅运行默认转换而不指定较低的质量可能会使文件稍微变小,而不会丢失可见质量。20%的更小可能是一个有点多的要求,虽然,但它可能是实现某些图像

convert 1.JPG 1.webp # do not specify quality
大小 实际上,这在很大程度上取决于您的设置和源图像。例如,我最近对网站“在野外”文件夹中的所有jpg图像运行了此命令:

此特定服务器上的
convert
命令由ImageMagick 6.7.8提供电源。与原始JPG相比,一些文件明显更小,而另一些文件实际上更大。总体而言,在运行该命令后,所有JPG图像的总文件大小为49MB,而所有WebP图像的总文件大小为29MB。这是一个相当好的节约,然而,当我运行ImageMagick的JPG压缩时,它甚至更好:

convert filename.jpg -sampling-factor 4:2:0 -strip -quality 80 -interlace JPEG filename-new.jpg;
目录中所有新JPG的大小为21MB。两者都设置为压缩质量为80,但jpg压缩似乎更好。这可能与我的测试图像集上已经存在的一些压缩有关,以及它如何与WebP转换过程交互

正如我发现的,文件大小甚至可以增长,通常如果你在有损和无损图像之间转换。在上面链接的FAQ页面上,谷歌声称:“这主要是由于颜色空间的差异(YUV420和ARGB)以及它们之间的转换。”


tl;dr:在野外,它可能会也可能不会改善文件大小,这取决于图像的类型、源文件的压缩情况/方式以及您为WebP设置的质量。可见退化更难测量,但尝试设置更高的质量,或者根本不指定质量。

只是在@pw的优秀答案中添加一条旁注,webp是一个很好的PNG替代品,但不是JPG替代品

它优于PNG,因为它有比LIBPG更好的无损压缩算法,并且它的最大特点是允许不同通道使用不同的压缩设置。例如,您可以在alpha上进行无损检测,但在RGB上进行有损检测,这对于叠加效果非常好

与JPG相比,它做得不太好。它使用VP8编解码器进行有损压缩,这只比JPG稍微好一点

我想看看海克。它使用更现代的h.265进行有损压缩,在相同的质量下通常比JPG高出两倍。这是苹果目前在iOS上默认使用的格式

这里有一个很好的演示:

这就是libheif,编译成javascript并在浏览器中运行。你可以上传.heic到它,然后作为jpg下载。libheif有一些基本的命令行工具来编码和解码图像

遗憾的是,它确实存在一些专利问题,您可能需要谨慎一点


更新进一步看,目前的希望是AVIF:它与HEIC(混淆地称为HEIF)的容器格式相同,但将有问题的h.265压缩机替换为AV1。AV1大致相当于h.265,但没有专利。

您正在重新编码有损压缩的jpeg;如果您有权访问原始原始文件,则应将其用作主文件。目前,您正在压缩jpeg编码器引入的噪声(和其他人工制品),因此WebP编解码器无法访问jpeg编码时已丢失的相同信息。当然,情况会更糟


换言之;如果可能,您应该对原始图像数据进行编码。我知道有些相机和设备只输出HEIC/JPEG而不输出RAW,因此您可能没有选择-最好的办法是将JPEG保持为JPEG。

刚刚使用我的DSLR相机的高分辨率JPG进行了快速测试,使用Photoshop CC 2020(和WebPShop插件)将其转换为410x800背景图片,用于移动设备

无损:

  • PNG 100%:680 KB
  • JPG 12(最大):428 KB
  • WEBP 100%:537KB
50%的质量:

  • JPG 6(50%):119KB
  • WEBP 50%:45KB
在50%的JPG有更多的细节,但相当可比的质量

0质量:

  • JPG 0(最小):51KB
  • WEBP 0%:6KB

在0%时,WEBP是可怕的。但是想象一下最低质量的JPG,那是糟糕的图像质量,WEBP肯定会以50%的速度击败它,同时文件大小仍然更小。所以对我来说。。这是免费的午餐。

HEIF与WEBP相比如何?WEBP和JPEG在有损图像方面大致相似
convert filename.jpg -sampling-factor 4:2:0 -strip -quality 80 -interlace JPEG filename-new.jpg;