前言
随着编程技术的发展,如何在程序中处理图像已经是所有编程爱好者不得不面对的一个重要问题,笔者在天极网上曾发表了多篇关于数字图像处理的文章,但都是基于Visual C++开发平台的,对于习惯于使用Visual Basic的读者朋友来说,不能不算是一个遗憾。 网上有很多朋友关心如何在Viusal Basic环境下进行一些基本的图像处理,如位图文件数据的读取、显示、实现特效等,为了满足上述这些朋友们的需求,笔者通过这篇文章介绍一下如何在Visual Basic环境下实现图像文件的一些基本操作,希望可以对广大喜爱Visual Basic编程的朋友起到入门的作用。
一、BMP位图的DIB的结构 在 Windows 3.0 以前,Windows系统用的是DDB(设备有关位图),DDB没有调色板,显示的颜色依赖硬件,处理色彩很不方便。所以微软从Windows 3.0以后重新定义了BMP文件格式,使其支持设备无关位图--也就是DIB,其结构主要由以下几个部分构成:1)BITMAPFILEHEADER:BMP文件头;2)DIB BITMAPINFOHEADER:BMP位图文件信息头;3)RGBQUAD[]:BMP位图的调色板;4)位图数据块。BMP文件的结构示意图如图一所示:
图一、位图文件的结构示意图
(1)BMP位图文件头BITMAPFILEHEADER的VB声明如下:
Type BITMAPFILEHEADER bfType(0 to 1) As Byte bfSize As Long bfReserved1 As Integer bfReserved2 As Integer bfOffBits As Long End Type |
上述结构中,参数bfType 指示文件的类型,对于位图文件来说,它必须是"BM";参数bfSize指示位图文件的大小,它包括BITMAPFILEHEADER的长度;参数bfReserved1、bfReserved2目前保留,必须等于0;参数bfOffBits表示位图数据距离文件头的偏移字节数。