FRG图像文件格式(一):介绍

FRG图像文件格式(一):介绍
作者: HouSisong@GMail.com   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 )


(有些有趣的特性支持也在进一步考虑中: 比如一种更友好的内存或显存中的压缩格式\更好的编码质量和大小控制能力\更多输出颜色格式的直接支持?\新的最终用户级编码器\支持感兴趣区域使用更高质量参数\等)


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值