我需要在內存中使用BMP(作爲HBITMAP或CImage存儲),並將其保存到磁盤上的PNG文件中。使用C++將BMP保存爲PNG(VS 2010)FAST
這是我目前如何將圖像保存爲PNG。 CImage img; img.Save(「foo.png」)
我的問題是太慢了(250ms〜1920X1080)。這需要以JPG格式保存3倍的時間,並且保存爲BMP的時間約爲9倍。
我知道有很多用於linux的g ++庫(例如libpng)會這樣做,但是大多數支持visual studio的庫只支持版本6,而且我還沒有找到一個具有基準的庫,所以我有些猶豫,試圖讓這些圖書館工作只是爲了發現他們太慢了。
我不知道什麼類型的編碼器窗口使用(它隱藏在DLL中),但必須有更快的一個(我甚至願意犧牲一點點的磁盤大小,多達兩倍)。
Java庫很快就做到了這一點,但由於某種原因,微軟的圖書館作爲一隻烏龜很慢。
所以我想知道我有什麼選擇將屏幕大小的PNG保存到磁盤上〜100ms?
你可以使用4:4:4(無色失真)JPG編碼器設置爲無損質量嗎? – 2012-07-29 23:47:44
是的,Microsoft Library中是否有內置的HBITMAP/CImage易於創建? – 2012-07-30 03:55:49
我不知道我的頭頂上有一個,但我在那裏拋出它,以防你不必要地限制你的搜索空間,假設你有*有* png。 基於DCT的圖像編碼算法(jpg等)具有一些很好的數據並行方面,並且通過SSE指令可以很好地加速,因此我認爲您應該尋找體面的無損JPG代碼。 – 2012-07-30 04:12:34