Delphi关于TJPEGImage的使用(BMP\ JPG格式转换)


本文整理自网络,侵删。

  虽然BCB的较高版本包含了TJPEGImage构件,但是它的相关信息没有做到家: 
一是没有源代码,二是例子不多;帮助文件里面也没有关于protected属性和方法
的详细信息.这里把TJPEGImage的主要用法介绍一下,大家用的时候就方便一点.
 
一点概述:
 
  TJPEGImage同TBitmap一样,是TGraphics的子类,不是可视构件(我觉得名字
里面带个Image有误导作用).TJPEGImage内建了一个Bitmap(protected),能够完
成Bitmap和JPEG的转换.这个Bitmap和JPEG本身的实例(private)都是不可访问
的,不过通过public属性和方法已经可以搞定一般操作了.
 
 
DIBNeeded()和JPEGNeeded():
 
  这两个方法用来从JPEG或Bitmap之一的实例生成另一个的实例.TJPEGImage
类不维护内部两个实例的统一性,必要时用户可以使用这两个方法.JPEGNeeded
用得不多,SaveToFile方法会自动调用它.后面将会看到DIBNeeded是怎么用的.
 
 
 
显示图片:
 
  这是最简单的操作.注意到TJPEGImage是TGraphics的子类,可以毫不客气的
这样写:
JPEGImage1->LoadFromFile(...); //例子,不一定这样写,下同
Image1->Picture->Graphic=JPEGImage1;
这就OK了.
 
 
Bitmap转换成JPEG:
 
  我就看到这一个是给了例子的:
Bitmap1->LoadFromFile(...);
JPEGImage1->Assign(Bitmap1);
注意这时并没有生成真正的JPEG,而只是把Bitmap1的内容复制给JPEGImage1内部
的Bitmap实例.但是用户通常可以直接使用它,包括把它Assign给其他的Bitmap或
JPEGImage,以及通过TImage显示它.存为文件的时候TJPEGImage::SaveToFile方法
会自动调用JPEGNeeded()生成(如果不存在)JPEG并保存.
 
 
JPEG转换成Bitmap:
 

  上面可以把Bitmap1直接Assign给JPEGImage1是因为JPEGImage具有Bitmap和
JPEG的双重身份.反过来就不行了,这时候必须显式的生成Bitmap实例,然后才能
Assign:
JPEGImage1->LoadFromFile(...);
JPEGImage1->DIBNeeded();
Bitmap1->Assign(JPEGImage1);
 
 
一点补充:
 
  关于其他的发表属性和公开方法的用法帮助已经很清楚了.TJPEGImage的更
多用法隐藏在protected字段中.由于既没有源代码也没有帮助,大家只能从字面
上猜猜看了


例子:

先在在uses中加入jipeg单元

procedure TForm1.Button1Click(Sender: TObject);
var
myjpeg:Tjpegimage;
mybmp:Tbitmap;
begin
myjpeg:=Tjpegimage.create;
myjpeg.loadfromfile('C:\Documents and Settings\Administrator\桌面\新建文件夹 (2)\1.jpg');
mybmp:=Tbitmap.create;
mybmp.assign(myjpeg);
image1.picture.bitmap:=mybmp;
mybmp.SaveToFile('C:\Documents and Settings\Administrator\桌面\新建文件夹 (2)\1.bmp');
myjpeg.Free;
mybmp.Free;
end;

相关阅读 >>

Delphi wmi 取显卡gpu信息

Delphi 移位函数

Delphi 获取计算机串口列表

Delphi 图像分割

winapi 字符及字符串函数(9): lstrcat - 合并字符串

Delphi 文件,文件夹删除移动和拷贝

Delphi access中只取时间的日期部分的函数

Delphi tsearchrec

Delphi 图像二值化

Delphi 文件路径结尾去掉“\”

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...