如何显示Access数据库中的OLE字段(bmp或jpg文件)?

fairy1234567 2002-09-11 09:15:56
用Access数据库建立一库,其中有OLE字段(bmp或jpg图像),但在DElPHI中用DBImage控件无法将其打开,且发现在TDBGRID表中其字段自动显示为BLOB,但DBImage控件控件可以打开自带的演示库中的图像。
多谢解答!
...全文
244 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
junerr 2002-09-11
  • 打赏
  • 举报
回复
转载:
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

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧