更快的图像压缩/解压缩 - 延迟与微软的Jpeg相比

时间:2013-08-07 09:53:48

标签: c# image jpeg latency

可能有点主观。

但这是一个非常直截了当的问题。

最快的图像压缩/解压缩(两者一起)是什么? 我的意思是c#。

我很确定自己是Jpeg。

但是再一次,jpeg多年前一直遵循一个标准,并且必须遵守某些规则,以免破坏兼容性。

所以也许有一些我不知道的更好的东西?

当我说最快时,我的意思是延迟和表现。

意思是,例如,PNG,压缩1080p文件,需要1秒。 并且解压缩需要30ms,然后从位图源到第二个位图,这将是1.030秒的延迟。

由于许多原因,Jpeg比png更快,并且在解压缩方面也非常快。和许多其他事情一样,编码器/解码器完成大部分工作,这意味着即使标准本身可以产生更好的效果,坏编码器也会产生更糟糕的结果。

我目前仅限于内置的jpeg编码器/解码器,因为我还没有完全掌握如何从其他编码器/解码器(libjpeg等)进行P /调用,但这不是主题。

所以希望这是一个有效的问题,尽管我认为它可能就是这个问题的边缘。

编辑:注意到我之前曾问过这个问题,但是在另一个问题上或者称之为什么。虽然现在我已经更具体地写了它。但我认为这几乎是重复的。 我把它留在你手中主持人。

1 个答案:

答案 0 :(得分:0)

正如你所说,PNG非常慢。对于10,000 x 10,000像素RGB图像,我看到:

$ time vips copy wtc.jpg x.jpg
real    0m0.915s
user    0m1.652s
sys 0m0.052s
$ time vips copy wtc.png x.png
real    0m28.808s
user    0m32.448s
sys 0m0.272s

是时候再次解压缩和重新压缩,real是挂钟时间,所以它慢了大约30倍。

大部分用于Deflate解压缩和重新压缩。 PNG有一个设置压缩级别的选项,0表示没有压缩,即。放气关闭。它仍然比JPEG慢得多。

$ time vips copy wtc0.png x.png[compression=0]
real    0m6.552s
user    0m8.528s
sys 0m0.440s

大约慢7倍,当然关闭压缩文件会更大。我不知道为什么libpng如此缓慢,如果有人能制作一个libpng-turbo会很棒。

TIFF可能是使用最广泛的格式。我明白了:

$ time vips copy wtc.tif x.tif 
real    0m0.637s
user    0m0.432s
sys 0m0.344s

所以比JPEG快约50%,但是由于图像没有被压缩,光盘上的文件会再大得多。

像PPM这样的格式甚至更快。它们是图像数据的简单转储,具有给出尺寸的小标题。我明白了:

$ time vips copy wtc.ppm x.ppm
real    0m0.336s
user    0m0.196s
sys 0m0.296s

比JPEG快近3倍。同样,缺点是文件将是巨大的,因为没有压缩。