我正在研究图像压缩技术并分析可在100毫秒内产生较小输出的最佳算法,或者在具有八核处理器的笔记本电脑上通过网络传输的分辨率为1920 * 1080的图像较小的算法。< / p>
我一直在使用GDI +和CxImage库进行图像压缩,通过JPG或PNG压缩技术为JPG提供大约30 ms的输出图像,使用PNG提供大约70 ms的彩色图像,所用时间相当不错,但是如果我追求更好的质量,压缩数据的大小要大得多。
然后我遇到了谷歌的WebP格式。我用VC ++使用libWebP尝试了它。质量和压缩率真的很棒,但所用的时间远远高于我的预期。如果我为alpha过滤和alpha压缩设置为true,则需要超过300毫秒和sime时间甚至超过1秒。
以下是我的WebpConfig设置
m_webp_config.quality = 50;
m_webp_config.alpha_quality = 0;
m_webp_config.lossless = false;
m_webp_config.method = 3;
m_webp_config.alpha_compression = false;
m_webp_config.alpha_filtering = false;
m_webp_config.autofilter = false;
m_webp_config.filter_sharpness = false;
m_webp_config.filter_strength = 0;
m_webp_config.filter_type = 0;
m_webp_config.use_sharp_yuv = false;
每当我捕获命令提示符或记事本++时,有时我会得到黑色图像(我怀疑问题出在那些包含大量文本数据的图像上,但对于包含大量文本的网页却不一样)
我是否在使用WebPConfig做错了什么?有没有办法优化它?。
我没有找到太多文档和任何可以让我对这些问题有所了解的论坛。
任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:1)
尝试无损压缩?可以存在比无损更快的无损模式。
如果您控制压缩和解压缩,请将图像分割为256x256个方块并压缩并单独发送。这样,您不仅可以并行化计算,还可以在压缩过程中交错传输一些传输,这可以简化压缩计算的时间预算。
如果减少'method'值,通常会发现更快的WebP压缩。对于无损,你需要减少两种方法和质量,他们以复杂的方式控制同样的事情。对于无损,尝试质量20和方法1(或者也许有0方法,也不记得)。