[求助]关于DBImage中显示JPG图片的问题(50分)

  • 主题发起人 主题发起人 yuyang_73
  • 开始时间 开始时间
Y

yuyang_73

Unregistered / Unconfirmed
GUEST, unregistred user!
[求助]关于DBImage中显示JPG图片的问题
我想在数据库中存放JPG文件,然后在DBImage中显示出来。可该控件不支持JPG文件的格式,请问各位大侠有什么办法吗???
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2347110
 
要用流的方式才通实现.
 
var mjpeg:tmemorystream;
mjpge:=tmemorystream.create;
(query.fieldbyname('PIC') as tblobfield).savetostream(mjpeg);
image1.picture.graphic.loadfromstream(mjpeg);
 
我用了下面一段代码,可是发生错误,不知什么原因,救命啊……

procedure TAddEquipFrm.AddPicPMClick(Sender: TObject);
var
SourceFile : String ;
Picture:TPicture;
BlobStream:TBlobStream;
MemStream:TMemoryStream;
Header:TGraphicHeader;
begin
if AddPicOpenDlg.Execute then
SourceFile := Trim(AddPicOpenDlg.FileName)
else Exit;
try
Picture:=TPicture.Create;
try
Picture.LoadFromFile(SourceFile);
if Picture.Graphic is TBitmap then
begin
DBImage1.Picture.LoadFromFile(SourceFile);
end else if Picture.Graphic is TJPEGImage then
//JPG图片.
begin
MemStream:=TMemoryStream.Create;
try
TJPEGImage(Picture.Graphic).SaveToStream(MemStream);
//存入临时流.
Header.Count:=1;
Header.HType:=$0101;
//JPG数据的Header.HType:=$0101当然也可以定为其他不等于$0100的值.
Header.Size:=MemStream.Size;
BlobStream:=TBlobStream.Create(TBlobField(StrDMod.EquipTbl.FieldByName('Picture')),bmWrite);
//创建Blob流.
try
MemStream.Seek(0,0);
BlobStream.Write(Header,sizeof(Header));
//先写入流头.
BlobStream.CopyFrom(MemStream,MemStream.Size);
//写入图片数据.
finally
BlobStream.Free; //////好象错误发生在这句
StrDMod.EquipTbl.Post;
end;
finally
MemStream.Free;
end;
end;
finally
Picture.Free;
end;
//////////////////////////////////////////////
Except
MessageBox(Application.Handle,'上载照片没有成功!','错误',MB_OK+MB_ICONERROR);
Exit;
end;
end;



错误提示为:---------------------------
Debugger Exception Notification
---------------------------
Project TraDev.exe raised exception class EInvalidGraphic with message 'Bitmap image is not valid'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------

 
各位大侠帮忙啊……
 
唉,还好Tomm工作室帮我解决了问题。散分吧!!![:(]
 
后退
顶部