如何提高PNG数据的解码时间
How to improve PNG data decoding time?
解码1080x1920大小的png图像需要超过30ms,我希望做得更快。
在Android中,BitmapFactory有一个方法,您可以在其中传递要返回的样本大小。这导致返回的解码图像小于实际源。这反过来又使得解码过程更快,从而产生较低质量的图像。
我想在c++中使用一些png解码库(如libpng)做一些类似的事情,但由于某种原因,我找不到任何关于低质量解码的细节。
任何可以提高解码时间的建议或想法都将不胜感激!
在解码中要求更低分辨率的图像对CPU工作没有任何影响:PNG流基本上是一个压缩的ZLIB流,必须完全解压缩,其中有一个特定于PNG的未过滤,这同样需要所有相邻像素。当然,二次采样可能会减少内存使用量(这本身可能会减少解码时间),为此,您需要逐步解码PNG(以便逐行进行二次采样);你可以用(我的)Java库PNGJ来做到这一点;它针对这种使用模式进行了优化,有些人已经在Android中成功使用了它。
如果你想在C中使用libpng,这个想法也是一样的。逐行解码图像,然后自己进行二次采样。
请记住,这种使用模式将与交错PNG相冲突(在这种情况下,您可能希望解码其中一个子图像),但无论如何,将1080x1920图像存储为交错PNG将是一个坏主意。
Android是开源的;您可以查看源代码:Java接口和C++后端——从那里,它调用SKIA库。
此类似乎是进行采样的地方;它是从这里调用的。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 从持续时间构造std::chrono::system_clock::time_point
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- while循环中while循环的时间复杂度是多少
- 使用简单类型列表实现的指数编译时间.为什么
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 在已经使用Git的情况下减少编译时间
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 从文本文件中读取时钟时间和事件时间并进行处理
- 具有未知值时的时间复杂性
- 如何减少花费的时间
- C++在变量给定的指定时间内关闭电脑
- rcpp函数中的清理时间很长
- C++:floor unix时间戳到UTC月份
- 如何在c++中录制具有精确帧时间戳的视频
- 无法解码base64+deflate数据
- 如何提高PNG数据的解码时间
- Windows MFT(媒体基础变换)解码器没有返回正确的采样时间或持续时间
- 如何解码一个AAC帧在一个时间使用c++