FRG圖像文件格式(一):介紹

FRG圖像文件格式(一):介紹
作者: [email protected]   2013.06.11


你是否經常爲進入一個自己喜歡的遊戲(或場景切換)而看着加載進度條焦急等待! 
作爲程序員的你是否對此毫無辦法: 
  bmp格式,格式簡單解碼快速(相當於內存拷貝),但需要佔用龐大的磁盤空間,而磁盤速度和內存速度幾乎差2個數量級!
  jpg格式,文件佔用空間很小,但解碼很複雜,速度很慢,不支持alpha通道; 爲了優化解碼速度,針對CPU特殊指令集開發優化的特殊解碼器版本,或專門開發用GPU解碼的版本,還是寄希望於運行的環境有硬件解碼器?
  png格式,文件佔用空間中等,無損壓縮,支持alpha通道; 但解碼速度很慢; 

有沒有同時考慮文件大小和解碼速度而設計的圖像文件格式嗎?
  在3D遊戲領域產生了一些類似目的的資源圖像格式,比如: S3TC(DXTC),FXT1,ASTC等  (當然,節省顯存可能是更重要的設計目的)
  它們一般壓縮率固定,圖像格式簡單,編解碼快速(應用時甚至不需要解壓); 缺點是壓縮率中等,壓縮質量無法控制,很多種類的圖像壓縮後質量損失過大,在精美的圖像和2D應用中較少採用; 


能不能設計一種質量可控,文件佔用較小,而又能快速解碼的圖像格式呢?

這正是FRG("Fast Read Graphics" or "Fast Resource Graphics")的設計目的;FRG的設計目的不是爲了增加一種通用的圖像交換格式(google的webp到現在都很難做到); 它只完成它的設計目標所要求的事,它不是面向最終用戶的,它應該只存在於發佈包的資源裏; 

FRG是一種優化從磁盤加載和解碼到顯示需要的時間的圖像文件格式;(性能測試: http://blog.csdn.net/housisong/article/details/9071113 );

FRG支持無損壓縮,也支持有質量損失的壓縮,支持32bitARGB顏色(當前的實現Alpha通道始終無損壓縮);  FRG的使用場景: 需要爲資源圖像文件減少大小,又要求能夠快速解碼顯示,編碼好的文件一般隨應用程序發佈,而不太在意編碼時的時間和內存空間佔用; 


試試FRG,讓你的遊戲和應用加載不再需要用戶等待!



 


圖像文件格式和其文件大小(無損情況下):
      bmp(ARGB32bit)           :  481,654 Bytes
      png                      :  121,363 Bytes 
      jpg(100 quality)         :   94,696 Bytes(no alpha)
      jpg2000(100 quality)     :  117,796 Bytes
      tiff(LZW)                :  211,980 Bytes
      frg(100 quality)(0  size):  182,865 Bytes


FRG有損壓縮下的文件: 

  

     frg(90 quality)(0  size):  102,541 Bytes               frg(80 quality)(0  size):  66,659 Bytes


     frg(75 quality)(0  size):  40,982 Bytes           

(更多壓縮質量展示:http://blog.csdn.net/housisong/article/details/9068535 )



演示程序和源代碼:

演示程序:
  我提供了windows\macosx\linux系統下的命令行程序,(我沒有發佈macosx\linux下程序的經驗,本機上試過,但不知道能否在別的電腦上執行;) 程序提供了png和frg之間的相互轉換功能(注意不要把你的png圖片覆蓋了)。
  演示程序下載: https://github.com/sisong/png2frg_app/archive/master.zip

FRG源代碼:
  FRG使用非常自由的MIT開源授權協議;
  項目地址: https://github.com/sisong/libfrg
  歡迎使用和給該項目貢獻你的代碼! 

  (編碼技術介紹:http://blog.csdn.net/housisong/article/details/9078301 )


(有些有趣的特性支持也在進一步考慮中: 比如一種更友好的內存或顯存中的壓縮格式\更好的編碼質量和大小控制能力\更多輸出顏色格式的直接支持?\新的最終用戶級編碼器\支持感興趣區域使用更高質量參數\等)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章