{**********************************************************}
{ }
{ 图象转换处理单元 }
{ 完成24bits bitmap 文件到256色bitmap 的转换 }
{**********************************************************}
//==========================================================
// 程序编写:陈林茂
// 编写日期:2002-06-28
//==========================================================
//==========================================================
// 程序的功能: 完成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.