【发布时间】:2018-07-18 21:27:05
【问题描述】:
压缩 RGBA 32 位图像数据的最快算法是什么?我正在使用 C 语言,但很高兴看到其他编程语言的示例。
现在我正在使用 LZ4,但我正在考虑运行长度/增量编码。
无损编码,混合了现实生活中的图像和计算机生成/剪贴画图像。 Alpha 通道始终存在,但通常是恒定的。
【问题讨论】:
标签: c compression rgba
压缩 RGBA 32 位图像数据的最快算法是什么?我正在使用 C 语言,但很高兴看到其他编程语言的示例。
现在我正在使用 LZ4,但我正在考虑运行长度/增量编码。
无损编码,混合了现实生活中的图像和计算机生成/剪贴画图像。 Alpha 通道始终存在,但通常是恒定的。
【问题讨论】:
标签: c compression rgba
我最终只使用了 LZ4。没有其他任何东西能达到如此快的速度,而且 LZ4 通常至少减小了 50% 的大小。
【讨论】:
有损还是无损?
“真实”图像还是计算机图形?
你真的有 Alpha 通道吗?
如果您需要无损(或半无损),则转换为 YUV 并压缩可能会减少大约 1/2(在已经将其变为 2 字节/像素之后)尝试Huffyuv
如果你有真实的图像,那么 H264 可以进行非常高的压缩,并且有优化的库和硬件支持,所以它可以非常快。
如果您有计算机图形类型的图像,颜色很少但需要保留边缘,或者您实际上有一个 A 通道,那么运行长度可能会很好 - 尝试先将图像拆分为每个颜色的帧。
【讨论】:
LZ4 是 LZ77 系列,它只有几行代码,但我自己从未做过,但我猜你的运行长度是正确的,或者 delta 代码是最快的,也适用于图像。还有snappy算法。最近我尝试使用 exdupe 实用程序来压缩我的虚拟机。这件事也非常快:http://www.exdupe.com。 exdupe 似乎使用了 rzip 的东西:http://encode.ru/threads/1354-Data-deduplication。
【讨论】: