最近有几张真彩色图片需要转换为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+GDI实现图片的镜像翻转,有需要的可以试试。
——在GDI+ Painter应用程序中添加颜色、钢笔和画笔 总结 第5章 颜色、字体和文本 5.1 访问Graphics对象 5.2 使用颜色 5.3 使用字体 5.4 使用文本和字符串 5.5 渲染文本的质量和性能 5.6 高级版式 5.7 一个...
DELPHI版的GDI++库,内有Demos.
使用GDI+进行图形缩放、拖动,多种图片格式支持,仅简单示例。 问题源贴:http://bbs.csdn.net/topics/390638094
——在GDI+ Painter应用程序中添加颜色、钢笔和画笔 总结 第5章 颜色、字体和文本 5.1 访问Graphics对象 5.2 使用颜色 5.3 使用字体 5.4 使用文本和字符串 5.5 渲染文本的质量和性能 5.6 高级版式 5.7 一个...
GDI+程序设计.pdf,书籍和随书源码。
GDI+程序设计 GDI+程序设计 GDI+程序设计 GDI+程序设计
教你在VC下如何使用GDI+进行 图像程序设计,是整理的比较全的资料。
一本为C#开发人员准备的图形图像处理技术的书籍
在Delphi中使用GDI+,范例中包含GDI+各种效果的测试。
Delphi GDI+
一本不可多得的GDI+绘图书籍,网上GDI+介绍其实挺少的,研究GDI+绘图时,浪费了不少时间,找了很久,发现了一本好书,在万分激动的心情下,将此书分享给大家,希望在GDI+绘图上给您一些指导。
C#GDI+小游戏 飞机大战C#GDI+小游戏 飞机大战C#GDI+小游戏 飞机大战C#GDI+小游戏 飞机大战C#GDI+小游戏 飞机大战
GDI+开发的帮助文档,讲得清晰浅显,而且是中文的.如果学习GDI+开发的话,特别是初学者,强烈推荐下载. 对于初学者,还有一个问题就是,如果想要进行GDI+开发, 需要下载一个GDI+的开发包(SDK). 网上搜到的一般只包含一个...
GDI+的说明 GDI+的说明 GDI+的说明 GDI+的说明
GDI+旋转图像例程.rar GDI+旋转图像例程.rar GDI+旋转图像例程.rar GDI+旋转图像例程.rar GDI+旋转图像例程.rar GDI+旋转图像例程.rar
GDI+的好例子,绝对超值得。 C#GDI+的绘图程序C#GDI+的绘图程序C#GDI+的绘图程序