`
emowuyi
  • 浏览: 1478461 次
文章分类
社区版块
存档分类
最新评论

Delphi图像处理 -- 图像缩放

 
阅读更多

图像缩放是最常用的图像处理,在图像拉伸和取得图像略图中都要用到。图像缩放质量的好坏与图像像素插值方式有关,本文定义了常用的3种插值方式,即临近插值、线性插值和双立方插值方式:

具体的缩放及其用到的插值过程代码如下:

临近插值过程很简单,就一句代码,而线性插值过程和双立方插值过程则较复杂,而且对于各像素的插值比例计算更是耗时,为了加快插值速度,线性插值过程和双立方插值过程都用了事先计算好的插值比例表,分别存放在BilinearTable变量和BicubicTable变量中,这2个变量的初始化是在单元的初始化代码中实现的(代码参见《Delphi图像处理 -- 图像像素结构与图像数据转换》第八部分)。

其中,通过调用SetBicubicSlope可改变双立方插值的效果,这个值一般在-0.5 -- -2.0之间,初始值为-0.75。

图像旋转过程也要用到上面的插值过程的。

关于线性插值原理,在GetBilinearColor过程前面有一段伪代码作为解释;为了帮助理解双立方插值方式,下面给出其纯Pascal的浮点版和整数版代码:

另外,有关插值边界的处理,一般有2种办法,一是在插值过程中进行判断坐标是否超界而作相应的处理,二是舍弃边界部分,对于后者我是不主张的,因为那样是不完整的处理。我采用了扩展边框的办法进行边框插值处理,这样一来,虽然多了一道拷贝过程,却少了具体插值过程的坐标判断,二者抵消,插值速度应该是差不多的(据我测试,扩展边框办法在图像放大和旋转处理中速度还是略快一些),但是简化了插值代码。

下面是一个简单的图像缩放例子:

运行效果图如下:

图像缩放例子运行效果

文章中使用GDI+版本下载地址和说明见《GDI+ for VCL基础 -- GDI+ 与 VCL》。

文章中所用数据类型及一些过程见《Delphi图像处理 -- 数据类型及内部过程》和《Delphi图像处理 -- 图像像素结构与图像数据转换》。

尽管我十分努力,但水平有限,错误在所难免,欢迎指正和指导。邮箱地址:

maozefa@hotmail.com

说明:本文代码于2010.5.20重新修订过,在处理过程中增加了一个Alpha参数,可实现半透明形式的图像缩放。

分享到:
评论

相关推荐

    ( Delphi 7 )使用GDI+进行图形缩放、拖动,多种图片格式支持,仅简单示例

    使用GDI+进行图形缩放、拖动,多种图片格式支持,仅简单示例。 问题源贴:http://bbs.csdn.net/topics/390638094

    源码演示Delphi 如何放大和缩小图像【图片】.rar

    ,我们这个例子可以学习了解如何使用Delphi编程代码,放大或缩小一张图片,这里把放大和缩小图片的基数写在按钮事件中,用户每次单击按钮,就会按照一定的缩放倍数放大或缩小图像,本示例测试图片已写入程序中,编译...

    Delphi缩小放大图片

    Delphi基于图像控件放大图片、缩小图片,点击对应按钮实现对应的放大或缩小功能,Delphi图像处理的小操作,源码简单,免费下载。 运行环境:Windows/Delphi7

    Delphi 仿ACDSee_缩略图

    Delphi 仿ACDSee_缩略图 学习如何使用Delphi处理图像,缩放图像,显示图像信息

    图像处理软件压缩文件VB

    其中封装了10个常用图像处理的API函数,方便VC、VB、Delphi等开发工具调用。GeoInVB目录中是一个VB项目,对封装的Dll进行调用演示。 封装之前的Visual C++代码仅能进行256色图像的处理,现在封装的各API函数可以处理...

    Delphi编程图象融合程序

    PhotoSmart是一款面向图像处理的专业软件,它可以批量的对您的数码照片进行相关的特效处理,如加盖印章,添加文字,图像的优化以及各种图像格式转换,比例缩放等等,在PhotoShop中需要专业的图像处理技能才能够实现...

    FastBmp

    - 自由缩放图像 - 任意旋转图像 - 锐化 / 钝化图像 - 特殊效果处理 e.g. 马赛克,加杂音点 ... 简直是个小小 Photoshop. With Delphi source ! 速度也不错!

    DELPHI全屏截图、区域截屏程序.rar

    DELPHI全屏截图、区域截屏程序,同时还包括绘图工具、按比例缩放、图像剪裁、图像旋转、自定义形状抓图(圆形、椭圆形、正方形等),还有多种画笔工具,整个截屏软件在界面上的设计也是很棒,下边是TAB式窗口,功能...

    delphi EhLib 9.5.012 Full Source 专业版 .rar

    缩放网格以使其适合页面宽度的能力。 能够打印/预览网格标题。 能够打印/预览页面标题和页面页脚 指定当前页面,当前日期,当前时间和/或静态的宏 文本。 自动打印/预览TDBGridEh的选定区域 不为空。 ...

    Delphi编程大师2003 4of5

    一个能够旋转显示其内的图像的Image控件 Gifimage For Delphi6 Richview1.4.2 SakEmail控件3.4.3版本 利用Windows Socket API抓取网络上的网页的控件 系统信息控件 一个不错的RAS构件 最新版本的gifimage glad控件包...

    Delphi编程大师2003 2of5

    一个能够旋转显示其内的图像的Image控件 Gifimage For Delphi6 Richview1.4.2 SakEmail控件3.4.3版本 利用Windows Socket API抓取网络上的网页的控件 系统信息控件 一个不错的RAS构件 最新版本的gifimage glad控件包...

    Delphi编程大师2003 1of5

    一个能够旋转显示其内的图像的Image控件 Gifimage For Delphi6 Richview1.4.2 SakEmail控件3.4.3版本 利用Windows Socket API抓取网络上的网页的控件 系统信息控件 一个不错的RAS构件 最新版本的gifimage glad控件包...

    Delphi编程大师2003 5of5

    一个能够旋转显示其内的图像的Image控件 Gifimage For Delphi6 Richview1.4.2 SakEmail控件3.4.3版本 利用Windows Socket API抓取网络上的网页的控件 系统信息控件 一个不错的RAS构件 最新版本的gifimage glad控件包...

    Delphi编程大师2003 3of5

    一个能够旋转显示其内的图像的Image控件 Gifimage For Delphi6 Richview1.4.2 SakEmail控件3.4.3版本 利用Windows Socket API抓取网络上的网页的控件 系统信息控件 一个不错的RAS构件 最新版本的gifimage glad控件包...

    自定义图片裁剪

    支持资源id和图片Uri,可缩放,可拖动,可设置最大最小值(系统的貌似就不行),还支持圆形裁剪,也支持移动图片;裁剪后返回一个bitmap,上传或者保存本地需自行处理(getBitmap()时需要处理null情况,内存溢出时...

    易语言程序免安装版下载

    修改BUG:VCL相关支持库部分组件在修改个别属性或调用个别方法后不可见,并改进了Delphi版本的支持库SDK。 15. 修改BUG:高级表格在列类型为数值型时,添加新行且省略标题的情况下,会导致程序异常。 16. 修改BUG...

    ok mc10-a驱动

    •缩放功能: 硬件完成输入图像比例缩放 •选装功能 可具有视频同步脉冲输出 应用领域OK_MC10A(-E)适用于工业监控和多媒体的压缩、处理等研究开发和工程应用领域。 软件支持软件平台:提供各种WINDOWS系统的驱动...

    delphi 开发经验技巧宝典源码

    4.8 图形图像相关函数 85 0130 将TColor类型的颜色值转换为RGB值 85 0131 使用Bounds函数获得某矩形的TRect 86 0132 从已有的位图上创建位图 86 0133 使用Frame3D过程在画布上创建3D效果 87 4.9 文件操作...

    delphi 开发经验技巧宝典源码06

    4.8 图形图像相关函数 85 0130 将TColor类型的颜色值转换为RGB值 85 0131 使用Bounds函数获得某矩形的TRect 86 0132 从已有的位图上创建位图 86 0133 使用Frame3D过程在画布上创建3D效果 87 4.9 文件操作...

Global site tag (gtag.js) - Google Analytics