CnGraphcs快速图像处理库.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CnGraphcs快速图像处理库

CnGraphics快速图像处理库设计说明V301作者:与月共舞( HYPERLINK mailto:yygw@163.com yygw@163.com)2002.03综述CnGraphics.pas单元实现界面类的快速图像处理基础库,核心部分是一个使用24Bit RGB 格式的TCnBitmap位图类,以取代Delphi自带的TBitmap,大量的扩充包括快速访问象素、抗锯齿位图缩放、旋转、抗锯齿图形绘制、快速Alpha Blend、渐变色绘制、平滑字体绘制、各种滤镜特效等,当前的代码量为6500行。与界面类的设计目标一致,图像库设计的重点也是对速度和资源占用的优化。为什么要设计一个快速图像处理库?Delphi在Graphics单元中定义了一个相当优秀的图形图像库体系结构,它将复杂的Win32 GDI API封装为相对简单的使用方式,但不足处是底层访问和高级应用的功能不够。在图像处理的大量象素级访问中,使用TCanvas.Pixels简直就是一场噩梦。当然用TBitmap.ScanLine会是一个好的选择,但对于一个追求个性化界面的组件包来说,仅靠TBitmap提供的那些来自操作系统的图像功能是远远不够的。为了实现最大的代码重用和高效率开发,我们需要一套底层的快速图像处理库来提供对各种界面效果设计的支持。通过使用图像处理库我能做什么?相对于Delphi提供的图像处理功能,CnGraphics的设计重在速度快、功能强。它以FastLib为基础,提供了快速的底层数据访问支持和大量的通用算法,主功能有:通过Pixels和ScanLine属性,可以直接访问位图中的图像数据,速度相当快。象素数据以一个点RGB三个字节的方式存放,可以非常方便地进行处理。使用TCnBitmap的各种外部接口方法,方便地与VCL其它图像类以及文件、流交换数据。通过TCnBitmap提供的图像绘制、缩放、平铺、旋转等方法快速绘制图像,Canvas属性则允许用户按VCL方式操作位图。TCnBitmap支持抗锯齿图形绘制功能,使用二次插值算法进行几何图形绘制。快速的Alpha Blend混合、完整的透明支持、渐变色(多种颜色多种方式渐变)绘制、平滑字体显示为个性化的界面提供强劲的支持。相当方便地调整整个图像的RGB颜色分量、对比度、亮度、饱和度、灰度化、彩色化、颜色替换,对图像进行几何翻转、平移、变换等。模糊、锐化、噪声、去噪、马赛克、喷溅、浮雕、旋涡等滤镜处理方法提供接近专业图像软件的效果,还可自定义滤镜处理算子。附加的与图像处理相关的运行时间库如HSL、RGB颜色变换等。怎样使用图像处理库?CnGraphics提供了较多的功能,但在使用上相对还是比较简单的。图像类封装了大部分底层的功能,调用者一般不需要知道具体实现细节,公开的属性和方法尽量使用通用的命名习惯和标准,只有一些细节部分需要调用者注意。除了TCnBitmap,图像库还提供了其它一些类如TCnGradientColor、TCnFont等,它们主要针对控件编写进行设计,用作控件属性时对编写者透明,操作方式也尽量为方便使用而设计。核心设计这一部分内容主要针对有经验的开发人员编写,介绍图像处理库的核心设计内容,涉及很多实现细节方面的东西,很多内容并未定型,普通用户可以跳过该部分。当然在有图像处理经验的程序员眼里,这部分内容可能极简陋甚至漏洞百出,如果有错误还请谅解和指正。CnGraphics单元在设计中大量参考了FastLib、Graphic32、FlatStyle、pnBitmap等图像包的设计:位图格式。常用的彩色位图格式有8位、16(15)位、24位、32位等。使用调色板的位图固然有其优势,但在硬件资源发展到今天这个地步后,基于索引色的方式再不能满足视觉效果的要求,CnGraphics中彻底抛弃了调色板,所有与调色板相关的处理全部转换由VCL或操作系统处理。16位格式在游戏开发中曾相当流行,也有很多优秀成熟的引擎和算法,不过操作起来似乎不太方便,未做选择。24位格式一个象素占用三个字节存放,使用方便,是最常用的格式了,缺点是象素数据未按4字节对齐,不方便并行处理优化。32位的图像在RGB之外增加了Alpha不透明度字节,从底层上支持类似PhotoShop中图层和蒙板的功能,象素数据按4字节对齐存放,可以方便地使用MMX指令进行加速,同时这种格式得到了Win2000的底层支持。缺点是占用空间较多、算法较复杂,象素级的Alpha支持在控件中用处好象不大。在选择24位RGB格式还是32位RGBA格式中,考虑了很久还是决定用24位格式,但不排除将来升级到32位格式的可能。类层次结构。TCnBitmap派生自在CnClasses中定义的TCnThreadPersistent类,继承了通知事件、更新计数和线程安

文档评论(0)

jyf123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6153235235000003

1亿VIP精品文档

相关文档