我需要获取内存中的 BMP(存储为 HBITMAP 或 CImage,任你选择),并将其保存到磁盘上的 PNG 文件中。
这是我目前将图像保存为 png 的方式。CImage img; img.Save("foo.png")
我的问题是太慢了(~1920X1080 为 250 毫秒)。这需要 3X 保存为 JPG 的时间,大约 9X 保存为 BMP 的时间。
我知道有很多用于 linux 的 g++ 库(例如 libpng)可以做到这一点,但是大多数支持 Visual Studio 的库只支持版本 6,而且我还没有找到具有基准的库,所以我有点犹豫要不要尝试让这些库正常工作,结果却发现它们太慢了。
我不确定使用什么类型的编码器窗口(它隐藏在 DLL 中),但必须有一个更快的(我什至愿意牺牲一点磁盘大小,最多是两倍)。
Java 库可以很快地做到这一点,但出于某种原因,微软的库就像乌龟一样慢。
所以我想知道我有哪些选项可以在大约 100 毫秒内将屏幕大小的 PNG 保存到磁盘?