可能有点主观。
但这是一个非常直截了当的问题。
最快的图像压缩/解压缩(两者一起)是什么? 我的意思是c#。
我很确定自己是Jpeg。
但是再一次,jpeg多年前一直遵循一个标准,并且必须遵守某些规则,以免破坏兼容性。
所以也许有一些我不知道的更好的东西?
当我说最快时,我的意思是延迟和表现。
意思是,例如,PNG,压缩1080p文件,需要1秒。 并且解压缩需要30ms,然后从位图源到第二个位图,这将是1.030秒的延迟。
由于许多原因,Jpeg比png更快,并且在解压缩方面也非常快。和许多其他事情一样,编码器/解码器完成大部分工作,这意味着即使标准本身可以产生更好的效果,坏编码器也会产生更糟糕的结果。
我目前仅限于内置的jpeg编码器/解码器,因为我还没有完全掌握如何从其他编码器/解码器(libjpeg等)进行P /调用,但这不是主题。
所以希望这是一个有效的问题,尽管我认为它可能就是这个问题的边缘。
编辑:注意到我之前曾问过这个问题,但是在另一个问题上或者称之为什么。虽然现在我已经更具体地写了它。但我认为这几乎是重复的。 我把它留在你手中主持人。答案 0 :(得分:0)
$ 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倍。同样,缺点是文件将是巨大的,因为没有压缩。