转载:
TImage不能识别JEPG格式的图象数据,涉及jpg图片的操作(显示、存数据库等)要用TJPGImage类!
下面是一个简单的例子(本例中,库表有两个字段,一个是字符型,另一个是OLE类型。):
//打开、显示JPG图片,添加图象数据到数据库
procedure TForm1.Button3Click(Sender: TObject);
Var
JPGImage:TjpegImage;
Bitmap:TBitmap;
Stream : TMemoryStream;
FileName:String;
ExtName: string;
begin
JPGImage:=TJpegImage.Create;
//打开图象文件
if OpenPictureDialog1.Execute Then
begin
FileName:=OpenPictureDialog1.FileName;
ExtName:=AnsiUpperCase(ExtractFileExt(FileName)); //后缀名
//JPGImage加载图象。对两种类型的图象文件:.BMP和.JPG分别处理
if ExtName='.BMP' then
begin
Bitmap:=TBitmap.Create;
Bitmap.LoadFromFile(FileName);
JPGImage.Assign(Bitmap);
JPGImage.Compress; //压缩成JPEG格式
Bitmap.Free;
end;
if ExtName='.JPG' Then
JPGImage.LoadFromFile(FileName);
//JPG图象保存到数据库,要以MemoryStream为中介
Stream:= TMemoryStream.Create ;
JPGImage.SaveToStream(Stream);
table1.append;
table1FileName.asstring:=ExtractFileName(FileName);
table1Blob.LoadFromStream(Stream);
table1.Post;
Image1.Picture.Assign(JPGImage);
Stream.Free ;
end;
end;
//显示图象
procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
var
Stream : TStream;
JPGImage : TJpegImage;
begin
JPGImage:=Tjpegimage.Create;
if not table1Blob.isNull Then
begin
Stream:=TBlobStream.Create(Table1Blob,bmRead);
JPGImage.LoadFromStream(stream);
Image1.Picture.Assign(JPGImage);
Stream.Free;
end
else
Image1.Picture.Assign(Nil);
JPGImage.Free;
end;
请参考这一篇
http://www.csdn.net/expert/topic/960/960982.xml?temp=.64349
TImage不能识别JEPG格式的图象数据,涉及jpg图片的操作(显示、存数据库等)要用TJPGImage类!
下面是一个简单的例子(本例中,库表有两个字段,一个是字符型,另一个是OLE类型。):
//打开、显示JPG图片,添加图象数据到数据库
procedure TForm1.Button3Click(Sender: TObject);
Var
JPGImage:TjpegImage;
Bitmap:TBitmap;
Stream : TMemoryStream;
FileName:String;
ExtName: string;
begin
JPGImage:=TJpegImage.Create;
//打开图象文件
if OpenPictureDialog1.Execute Then
begin
FileName:=OpenPictureDialog1.FileName;
ExtName:=AnsiUpperCase(ExtractFileExt(FileName)); //后缀名
//JPGImage加载图象。对两种类型的图象文件:.BMP和.JPG分别处理
if ExtName='.BMP' then
begin
Bitmap:=TBitmap.Create;
Bitmap.LoadFromFile(FileName);
JPGImage.Assign(Bitmap);
JPGImage.Compress; //压缩成JPEG格式
Bitmap.Free;
end;
if ExtName='.JPG' Then
JPGImage.LoadFromFile(FileName);
//JPG图象保存到数据库,要以MemoryStream为中介
Stream:= TMemoryStream.Create ;
JPGImage.SaveToStream(Stream);
table1.append;
table1FileName.asstring:=ExtractFileName(FileName);
table1Blob.LoadFromStream(Stream);
table1.Post;
Image1.Picture.Assign(JPGImage);
Stream.Free ;
end;
end;
//显示图象
procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
var
Stream : TStream;
JPGImage : TJpegImage;
begin
JPGImage:=Tjpegimage.Create;
if not table1Blob.isNull Then
begin
Stream:=TBlobStream.Create(Table1Blob,bmRead);
JPGImage.LoadFromStream(stream);
Image1.Picture.Assign(JPGImage);
Stream.Free;
end
else
Image1.Picture.Assign(Nil);
JPGImage.Free;
end;
请参考这一篇
http://www.csdn.net/expert/topic/960/960982.xml?temp=.64349
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货