在工作过程中我经常使用到两种图象——网页上的JPEG图象和杂志题目的BMP图象一般来说我把原始的BMP图象保存在CD中然后用Delphi应用程序把它们转化成JPEG文件这篇文章我将介绍如何利用Delphi应用程序把BMP图象转化成JPEG图象及反之转化如果要查看图象格式信息请点击这里
一TJPEGImage
在Delphi 中Delphi控件库中的Timage控件能显示不同格式的文件如BMP ICO WMF/EMF and JPEG文件然后能够显示文件格式并不等于能够进行文件格式之间的转化Timage控件中的LoadFromFile和SaveToFile事件能保存一个BMP文件但如果你保存JPG文件你也只能采用BMP格式存放
幸运的是Delphi 中的TJPEGImage控件能很好地解决了上面的问题这一控件没有直接存放在控件库中它均以JPEB形式声明和说明如果你想找到这一控件的例程源代码请点击Dehphi目录下的Info\Extras\JPEG路径(不要告诉我你从没打开这一目录这里有很多好东东)
TJPEGImage控件从Tgraphic控件引申出来所以它与Tbitmap控件相兼容如Listing A如示你可以利用TJPEGImage控件写出一个把BMP转化成JPEG的例子
注意到Tbitmap使用LoadFromFile事件传入文件但是你必需只能利用TJPEGImage的SaveToStream事件保存JPEG图象到文件后者没有如SaveToFile的事件这一过程包括了文件压缩质量的百分比缺省值是%
例如我把字节的Handshakbmp文件从Common Files\Borland Shared\Images\Splash\Color目录下转化为种JPEG文件这一过程采用%%%%%%%%%%%%的压缩质量百分比如Table A所示在%下图象不再有很好的质量%压缩质量比结果是文件变大事实上当我采用%以上的压缩质量百分比时图象都保持很好的效果
Compression quality percentage
Resulting JPEG file size
%
%
%
%
%
%
%
%
%
%
%
%
二从JPEG转化为BMP
把JPEG图象转化为BMP图象能够节省很大的存储空间但是这一过程要丢失一些图象性质在很多情况下人们都是存储BMP文件而不是JPEG文件
幸运的是从JPEG转化到BMP是非常的容易你无需使用压缩质量的方式但是你应该记住BMP文件是不能压缩的所认BMP的压缩设置对最后的文件大小没有任何的影响
Delphi JPGBMP工程的源代码位于Listing B这一程序演示了以上所说的内容
三非常容易地转化这里的代码片段演示了如何转化BMP到JPEG及如何返之转化即使你还关注转化的质量和文件大小Delphi的TJPEGImage控件也能让你很容易地完成这一操作