最近有几张真彩色图片需要转换为GIF图片,直接用GDI+位图转换存储效果太差,网上搜索半天,也没找到完全合适的,有关Delphi语言和GDI+转换的详细资料更是没发现,只好自己写了几个Delphi类,发表在这里供大家参考。
下面是几个真彩色转索引图像类的完整代码:
代码中共定义了四个类:TColorNode是一个八叉树颜色节点类;TIndexTree是图像转换基类,支持真彩色转换256色和16色图像,绝大部分转换工作都写在了这个类中;TBitmapIndexTree是Delphi的TGraphic对象转换类;TGpBitmapIndexTree是GDI+位图转换类。代码没做大的优化,除了一个数据拷贝过程TIndexTree.CopySourceData和像素色彩的调色板匹配方法TIndexTree.GetIndexColor采用了BASM代码,其余都采用纯Delphi代码(TIndexTree.GetIndexColor也有一个被注销的纯Delphi代码,可供参考)。
下面是GDI+32位PNG图像转256色图片例子代码(保存代码没在例子中):
效果图如下,左边是PNG源图,中间是转换后存储的白色背景GIF图片(设置ColorBackground属性可改变背景颜色),右边是没经过转换直接存储的GIF图片:



下面是TJPEGImage对象真彩色转256色图像例子:
效果图如下(上边是JPEG源图,下边是转换后的256色GIF图像):


代码中所用Gdiplus单元下载地址及BUG更正见文章《GDI+ for VCL基础 -- GDI+ 与 VCL》。
建议和指导请来信:maozefa@hotmail.com
分享到:
相关推荐
Delphi作为流行的Windows应用程序开发工具,其VCL库与GDI接口紧密结合,使得开发者能够方便地利用GDI的功能。 首先,我们要理解图像翻转的原理。图像的镜像翻转主要有两种类型:水平翻转(也称为左右翻转)和垂直...
标题提到的“Delphi真彩色转256色源程序”涉及到的核心知识点包括: 1. **真彩色(True Color)**:真彩色是指计算机屏幕上能够显示的颜色数量达到或超过1670万种,通常用24位或32位颜色深度来表示,其中24位颜色由...
这涉及到位深度的转换,可能包括从256色索引图像到真彩色图像的转换。 5. **写入BMP文件**:创建一个新的BMP文件,设置正确的头信息,然后将转换后的位图数据写入文件。注意BMP文件的存储顺序是从底部到顶部,且...
4. **颜色空间转换**:PNG支持多种颜色模式,如灰度、真彩色、索引色等,处理时可能需要进行颜色空间的转换。 5. **透明度处理**:PNG支持Alpha通道,处理时需要考虑如何保留和修改透明度信息。 6. **性能优化**:对...
在编程领域,Delphi是一种基于Object Pascal的集成开发环境(IDE),它以其高效性和灵活性而闻名,尤其在Windows平台上的应用程序开发中占据了重要的位置。本压缩包“Delphi颜色通道处理例子..rar”显然包含了一些...
修改BUG:VCL相关支持库部分组件在修改个别属性或调用个别方法后不可见,并改进了Delphi版本的支持库SDK。 15. 修改BUG:高级表格在列类型为数值型时,添加新行且省略标题的情况下,会导致程序异常。 16. 修改BUG...