存jpeg的问题!!!请高手指教(不是简单的TBlobField)(100分)

  • 主题发起人 主题发起人 zzz^^^
  • 开始时间 开始时间
Z

zzz^^^

Unregistered / Unconfirmed
GUEST, unregistred user!
TBlobField(Table1.FieldByName('图片')).SaveToStream(tempStream);
Jpeg.LoadFromStream(tempStream); //出错,可以试试Jpeg.SaveToStream(s),此时s.Size=0 而tempStream>0
一定要:
Tblobfield(Table1.FieldByName('图片')).SaveToFile('1.jpg');
Jpeg.LoadFromFile('1.jpg');
borland没有公开Jpge.pas,难道只能存文件吗?
 
TBlobField(Table1.FieldByName('图片')).SaveToStream(tempStream);
是bmp格式的图片流,不能用jpeg格式打开.
 
procedure TMenuForm.ShowImage;
var
MyJpeg:TJpegImage;
MyStm:TMemoryStream;
begin
if not a.DataSet.FieldByName('图象').IsNull then
begin
try
MyJpeg:=TJpegImage.Create;
MyStm:=TMemoryStream.Create;
MyStm.Clear;
TBlobField(a.Dataset.FieldByName('图象')).SaveToStream(MyStm);
MyStm.Position:=0; // 这句很重要!
MyJpeg.LoadFromStream(MyStm);
FootImage.Picture.BitMap.Assign(MyJpeg);
finally
MyJpeg.Free;
MyStm.Free;
end;
end
else
begin
if FootImage.Picture<>Nil then
begin
FootImage.Picture.Assign(Nil);
end;
end;
end;
 
下面的代码是直接将数据库中的JPG图片(放在BLOB字段中的)取出来,然后放在一个
IMAGE里头显示,不使用文件。

procedure TForm1.Button2Click(Sender: TObject);
var
sqlstr : string;
myjpeg : Tjpegimage;
mystm : TMemoryStream;
fld : TBlobField;
begin

mystm := TMemoryStream.Create;
myjpeg := Tjpegimage.Create;

sqlstr := 'select * from pic_test';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sqlstr);
ADOQuery1.Open;

ADOQuery1.First;
fld := ADOQuery1.FieldByName('pic_data') as TBlobField;
fld.SaveToStream(mystm);
mystm.Position := 0;
myjpeg.LoadFromStream(mystm);
image2.Picture.Graphic := myjpeg;

mystm.Free;
myjpeg.Free;

end;
 
我的数据库中存的是Jpge!!!!!!
 
当然知道你的数据库存的是 JPEG 了,要不然,那用这么麻烦!我的过程是可以得。
 
呵呵,忘了把Position位置指为0了。谢谢大家(白丢200大洋)
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
870
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部