{**********************************************************} { } { 图象转换处理单元 } { 完成24bits bitmap 文件到256色bitmap 的转换 } {**********************************************************}
//========================================================== // 程序编写:陈林茂 // 编写日期:2002-06-28
// 联系作者:[email protected] //==========================================================
//========================================================== // 程序的功能: 完成BITMAP格式的图象到JPEG 格式图象的转换 // 程序转换的算法:利用TBITMAP,Tjpeg中的默认的方法进行转换 // 首先定义一BITMAP数据源,将图象文件调入到TBITMAP中; // 然后定义一JPEG 数据源,将它的数据源定义来源于TBITMAP。 //===========================================================
unit bmpJpg_unit;
interface Uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons,Jpeg;
//=========================================================== //函数的功能:将BITMAP格式的文件转换到JPG格式的文件 //函数名称: BMPTOJPG //参数的说明: // BMPFILE : 需要转换的BMP格式的文件 // JPGFILE : 转换为JPG格式的目的文件 // COMPRESS : 转换过程中文件的压缩比 //=========================================================== Function BmpToJpg(BmpFile :String; JpgFile :String;Compress :Integer):Boolean;
Function JpgToBmp(JpgFile :String; BmpFile :String;Compress :Integer):Boolean;
implementation
//将BMP图象转化为JPG图象 Function BmpToJpg(BmpFile :String; JpgFile :String;Compress :Integer):Boolean; Var Bitmap :TBitmap; Jpgimage :TjpegImage; Begin Result :=False; Try bitmap :=TBitmap.Create ; JpgImage :=TjpegImage.Create ; bitmap.LoadFromFile(BmpFile); jpgImage.CompressionQuality :=Compress; JpgImage.Performance :=jpBestQuality; jpgImage.Grayscale :=True; jpgImage.Smoothing :=True; JpgImage.Assign(Bitmap); JpgImage.Compress ; JpgImage.SaveToFile(JpgFile); Result :=True; Except End; Bitmap.Free; JpgImage.Free ;
End;
//将JPG图象转化为256色的BMP图象 Function JpgtoBmp(JpgFile :String; BmpFile :String;Compress :Integer):Boolean; Var Bitmap :TBitmap; Jpgimage :TjpegImage; Begin Result :=False; Try bitmap :=TBitmap.Create ; JpgImage :=TjpegImage.Create ; jpgImage.LoadFromFile(JpgFile);
JpgImage.Performance :=jpBestQuality; jpgImage.Grayscale :=True; jpgImage.Smoothing :=True;
bitmap.Assign(jpgImage); bitmap.Dormant ;
bitmap.SaveToFile(bmpfile); Result :=True; Except End; Bitmap.Free; JpgImage.Free ;
End;
begin
//将24位彩色图象转化为256色灰度图象
jpgFilename := _appPath +'temp.jpg'; bmpFilename := _appPath +'temp.bmp'; bmptojpg(srcfileName,jpgFilename,100); jpgtoBmp(jpgfilename,bmpFilename,100);
//经过上面两个步骤,系统自动将24bits bmp 转换为256色bitmap,在delphi5.0下通过测试,只是有点遗憾的是,彩色位图会转化为灰度图象。srcfileName :为24bits BMP文件。
end. 
|