图像存储,调出错误!!!!!!!!!(50分)

  • 主题发起人 主题发起人 dwj_dd
  • 开始时间 开始时间
D

dwj_dd

Unregistered / Unconfirmed
GUEST, unregistred user!
调出图形代码如下:
try
query1.Open;
tempstream:=TStringStream.Create('');
TBlobField(Query1.FieldByName('Graphic')).SaveToStream(tempstream);
tempstream.Position:=0;
tempjpeg:=TJPEGImage.Create;
tempjpeg.LoadFromStream(tempstream);
DBImage1.Picture.Bitmap.Assign(tempjpeg);
finally
tempstream.Free;
tempjpeg.Free;
end;
存储图形代码如下:
if image1.Picture.Graphic<>nil then //把img里的图片用流形式保存到数据库
begin
query1.Open;
query1.Edit;
query1.Append;
str:=Tmemorystream.Create;
image1.Picture.Graphic.SaveToStream(str);
str.Position:=0;
Tblobfield(Query1.FieldByName('graphic')).loadfromstream(str);
query1.Post;
str.Free;
query1.Close;
end
为什么不管是存储和调用都出错,错误提示为 'jpeg error #42',有谁能够回答我的提问?
 
一个利用TBlobStream在数据库中保存BMP和JPG图片的例子
http://www.aidelphi.com/6to23/Docu/BlobStream.zip
 
to :app2001
这个程序写的不错,
 
我也认为不错,所以我常拿出来推荐,嘿,不过不是我写的。
 
你确保数据库内存放的是JPEG格式的文件吗?
 
在窗体创建时加上
ImgInnerImage.Picture.RegisterFileFormat('jpg', 'jgp picture', TJPEGImage);
ImgInnerImage.Picture.RegisterFileFormat('jpeg', 'jgep picture', TJPEGImage);
ImgInnerImage.Picture.RegisterFileFormat('gif', 'gif picture', TGIFImage);
ImgInnerImage.Picture.RegisterFileFormat('bmp', 'bmp picture', TBitmap);
 
我以前做的,你看看。
procedure TForm1.QueryAddButtonClick(Sender: TObject);
var
s:TMemorystream;
begin
S:=TMemorystream.Create();
image1.Picture.Bitmap.SaveToStream(S);
s.Position:=0;
Query.Close;
Query.SQL.Clear;
Query.SQL.Add('INSERT INTO TABLE3(Img,PID)');
Query.SQL.Add('VALUES(:I,:ID)');
Query.Parameters.Items[0].LoadFromStream(s,ftBlob);
Query.Parameters.Items[1].Value:=1;
Query.ExecSQL;
s.Free;
end;

procedure TForm1.QueryReadButtonClick(Sender: TObject);
var
s:Tstream;
begin
Query.Close;
Query.SQL.Clear;
Query.SQL.Add('SELECT Img FROM TABLE3');
Query.SQL.Add('Where PID=:ID');
Query.Parameters.Items[0].Value:=1;
Query.Open;
with Query do
s:=CreateBlobStream(Query.FieldByName('Img'),bmRead);
image2.Picture.Bitmap.LoadFromStream(s);
s.Free;
end;

procedure TForm1.UpdButtonClick(Sender: TObject);
var
s:Tstream;
begin
S:=TMemorystream.Create();
image3.Picture.Bitmap.SaveToStream(S);
s.Position:=0;
Query.Close;
Query.SQL.Clear;
Query.SQL.Add('UPDATE TABLE3');
Query.SQL.Add('SET Img=:I');
Query.SQL.Add('WHERE PID=:ID');
Query.Parameters.Items[0].LoadFromStream(s,ftBlob);
Query.Parameters.Items[1].Value:=1;
Query.ExecSQL;
s.Free;
end;

procedure TForm1.DelButtonClick(Sender: TObject);
begin
Query.Close;
Query.SQL.Clear;
Query.SQL.Add('DELETE FROM TABLE3');
Query.SQL.Add('WHERE PID=:ID');
Query.Parameters.Items[0].Value:=1;
Query.ExecSQL;
end;


Table3:
PID int//ID
Img image//blob数据
 
存储图片没存好导致调用的时候出错.
我以前也遇到过,后来好像先把图片保存成临时文件,再把文件转化成流再存进去可以了
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
975
import
I
S
回复
0
查看
952
SUNSTONE的Delphi笔记
S
后退
顶部