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

{**********************************************************}
{                                                                                                      }
{                      图象转换处理单元                                                    }
{                    完成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.

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

linmaochen

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值