打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
delphi实现bmp与jpg图像相互转换及位图大小调整

delphi实现bmp与jpg图像相互转换及位图大小调整 
 
摘  要:本文介绍了如何通过delphi编码实现bmp格式图像与jpeg格式图像的相互转换以
及bmp格式图像的大小的调整。在图片处理操作中使用了几个api函数,其算法同样适用于其他编程语言。  
关键词:图形转换、图片调整  
在很多MIS系统或者其他管理信息系统中,有需要用户上传照片到数据库等对图片的操作,根据系统需求不同,可能需要对这些照片进行格式转换或者大小的调整。这里有三个在MIS系统或者其他管理信息系统中比较常用的图片处理过程,与大家分享。 
 
1、 Bmp格式转换位jpg(jpeg)格式。 
进程:Image_BitmapToJPeg实现bmp格式图片到Jpg(jpeg)格式图片的转换,如下:  
{参数介绍: 
  FileName:要转换的位图的路径及名称 
  SaveFileName:转换后生成 jpg图形的路径及名称}   
Procedure Image_BitmapToJPeg(Const FileName: String;SaveFileName:String=''); Var 
  Bitmap: TBitmap;                 //定义变量 
  JPeg: TJPegImage;                //所属unit是:Jpeg,需要在项目的uses 中 加入Jpeg Begin   Try 
    Bitmap := TBitmap.Create;      //创建位图资源 
    Bitmap.LoadFromFile(FileName); //根据传入的参数载入位图资源     JPeg := TJPegImage.Create;     //创建jpeg资源 
    JPeg.Assign(Bitmap);          //把bitmap中的图像资源拷贝到jpeg对象中 
    IF Trim(SaveFileName)='' Then  //如果传入的目的地址为空,按原名保存(扩展名改变)       JPeg.SaveToFile(ChangeFileExt(FileName, '.jpg')) 
    Else                        //按参数指定的名称保存jpg图片       JPeg.SaveToFile(SaveFileName); 
  Finally 
    FreeAndNil(Bitmap);           //释放资源     FreeAndNil(JPeg);             //释放资源   End; End; 
从上面的代码及其注释中我们可以看出程序思路,首先分别定义并创建bmp对象Bitmap和jpeg对象JPeg,然后在Bitmap对象载入位图后,把Bitmap中的图像
资源复制到Jpeg中,最后把Jpeg保存到磁盘并释放创建的对象。 
 
2、 Jpg(jpeg)格式转换为bmp格式。 
进程:Image_JPegToBitmap实现Jpg(jpeg)格式图片到bmp格式图片的转换,如下: 
 


名人堂:众名人带你感受他们的驱动人生马云任志强李嘉诚柳传志史玉柱
 


{参数介绍: 
  FileName:要转换的 jpg图形的路径及名称   SaveFileName:转换后生成位图的路径及名称} 
Procedure Image_JPegToBitmap(Const FileName: String;SaveFileName:String=''); Var 
Bitmap: TBitmap;                  //定义变量 
JPeg: TJPegImage;                 //所属unit是:Jpeg,需要在项目的uses 中加入 Jpeg Begin 
Try 
   JPeg := TJPegImage.Create;     //创建jpeg资源 
   JPeg.LoadFromFile(FileName);   //根据传入的参数载入jpeg资源    Bitmap := TBitmap.Create;      //创建位图资源 
   Bitmap.Assign(JPeg);           //把jpeg中的图像资源拷贝到bitmap对象中 
   IF Trim(SaveFileName)='' Then  //如果传入的目的地址为空,按原名保存(扩展名改变)       Bitmap.SaveToFile(ChangeFileExt(FileName, '.bmp')) 
    Else                           //按参数指定的名称保存bmp图片       Bitmap.SaveToFile(SaveFileName);  Finally 
   FreeAndNil(Bitmap);            //释放资源    FreeAndNil(JPeg);              //释放资源  End; End; 
根据上面的代码及其注释我们可以看出,其程序思路与Image_BitmapToJPeg过
程的思路是一致的。 
 
3、 Bmp位图大小调整。 
进程:Image_FitBitmap实现对位图大小的调整。如下: 
 
{参数介绍: 
  Source:要转换的 位图的路径及名称   Dest:  转换后生成位图的路径及名称   x, y:  转换后位图图片的宽和高} 
procedure Image_FitBitmap(const Source,Dest:string;const x,y:integer); var 
 abmp,bbmp:tbitmap;            //定义变量  abmp为源对象变量  bbmp为目的对象变量 begin 
abmp:=tbitmap.Create;                     //创建位图资源 bbmp:=tbitmap.Create;                     //创建位图资源 try 
  abmp.LoadFromFile(Source);             //载入源位图资源 bbmp.Width:=x;                         //设置目的位图的宽 
bbmp.Height:=y;                        //设置目的位图的高 
bbmp.PixelFormat:=pfDevice;            //设置位图格式为当前设备默认格式 SetStretchBltMode(bbmp.Canvas.Handle,COLORONCOLOR);//设置指位图拉伸模式 

 

 


    
    
stretchblt(bbmp.Canvas.Handle,0,0,bbmp.Width,bbmp.Height,abmp.Canvas.Handle,0,0,abmp.Width,abmp.Height,srccopy);   //从源矩形中复制一个位图到目标矩形并适当压缩bbmp.SaveToFile(Dest); //保存转换后的目的图片 finally 
abmp.Free;  //释放资源 bbmp.Free;  //释放资源 end; end; 
结合上面的代码及其注释我们知道其思路,首先创建两个位图资源分别对应源位图(abmp)和目的位图(bbmp),源位图载入后,设置目的位图的宽和高,然后通过api函数SetStretchBltMode来设置位图的拉伸模式,通过api函数stretchblt设置目的位图图像资源,最后保存目的位图到磁盘并释放创建的对象。 
 
上面三个过程的源代码加入delphi程序中即可使用,其中TJPegImage 类型属于Jpeg单元,也就是你使用该类的时候,需要在所在单元的uses中加入Jpeg。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
在C#中将.bmp转为.jpg格式的方法
C#手动自动保存图片
Gdi+
csdn技术中心 delphi中资源文件使用详解
数据库中图片操作
侦探·悬疑电影136部
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服