24bits bitmap 文件到256色bitmap 的转换

来源:互联网 发布:2016年淘宝开店押金 编辑:程序博客网 时间:2024/05/24 16:15

{**********************************************************}
{                                                                                                      }
{                      图象转换处理单元                                                    }
{                    完成24bits bitmap 文件到256色bitmap 的转换               }
{**********************************************************}


//==========================================================
//  程序编写:陈林茂
//  编写日期:2002-06-28

// 联系作者:linmaochen@sohu.com
//==========================================================


//==========================================================
// 程序的功能:  完成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. 

原创粉丝点击