LibWebP 的图像压缩时间过长

LibWebP is taking too much time for image compression

我正在研究图像压缩技术,并分析可以在 100 毫秒或更短时间内为分辨率为 1920 * 1080 的笔记本电脑上的分辨率为 1920 * 1080 的图像产生更小输出的最佳算法,以便通过网络传输。

我一直在使用 GDI+ 和 CxImage 库进行图像压缩,通过 JPG 或 PNG 压缩技术,JPG 在大约 30 毫秒内输出图像,使用 PNG 彩色图像在大约 70 毫秒内输出图像,所用时间非常好但是如果我追求更好的质量,压缩数据的大小会大得多。

然后我遇到了 google 的 WebP 格式。我尝试将 libWebP 与 VC++ 结合使用。质量和压缩率真的很棒,但花费的时间比我预期的要长得多。如果alpha过滤和alpha压缩都设置为true,需要300多毫秒,甚至超过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 有什么问题吗?有什么办法可以优化吗?

我没有找到很多文档和任何论坛可以让我对这些问题有所了解。

如有任何帮助,我们将不胜感激。提前致谢。

试试无损压缩?可以有比有损模式更快的无损模式。

如果您能控制压缩和解压,请将图像拆分为 256x256 的正方形,然后分别压缩和发送。这样您不仅可以并行计算,还可以在压缩期间交错进行一些传输,这可以简化压缩计算的时间预算。

如果减小 'method' 值,您通常会发现 WebP 压缩速度更快。对于无损,您需要同时降低方法和质量,它们以复杂的方式控制同一件事。无损的,试试质量20和方法1(或者也有0方法,不记得了)。