RSS订阅 | 匿名投稿
您的位置:网站首页 > 图像 > 正文

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

作者:admin 来源: 日期:2011/8/1 20:52:59 人气: 标签:

 虽然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;

读完这篇文章后,您心情如何?
0
0
0
0
0
0
0
0
本文网址: