jpg.gif图象对SqlServer7.0的保存与输出显示的问题(200分)

  • 主题发起人 主题发起人 sim666
  • 开始时间 开始时间
S

sim666

Unregistered / Unconfirmed
GUEST, unregistred user!
要能存储在数据库中,并读取显示出来。
 
存:begin
if op1.Execute then
begin
dt.edit;
image1.Picture.LoadFromFile(op1.filename);
TBlobField(dt.fieldbyname('pic')).LoadFromfile(op1.FileName);
end;
 
输出, TDBImage 不能显示jpg,只好手工用 TImage 来显示
 
我也遇到此问题,把图象写入数据库每问题,但读出时,出现错误;我的代码如下:

var
imagestrm:tblobstream;
begin
imagestrm:=tblobstream.Create(frmdm_back.qradad_image,bmread);
try
if image1.Picture.Graphic.Empty then
image1.Picture.Graphic.LoadFromStream(imagestrm);
finally
imagestrm.Free;
end;
 
// 以下是模仿 TDBImage 写的控件中的部分代码,要 uses jpeg;
// 默认为 Jpeg 图象,Bmp 亦可显示——调试时会有错误对话框

TJpegImg = class(TJpegImage)
public
property Bitmap;
end;

procedure TBzDBImage.LoadPicture;
var
bs: TMemoryStream;
FJpegImage: TJpegImg;
begin
if not FPictureLoaded and (not Assigned(FDataLink.Field) or
FDataLink.Field.IsBlob) then
begin
bs := TMemoryStream.Create;
try
try
if FDataLink.Field <> nil then
begin
TBlobField(FDataLink.Field).SaveToStream(bs);
if bs.Size > 0 then
begin
bs.Position := 0;
FJpegImage.LoadFromStream(bs);
if not FJpegImage.Bitmap.Empty then
Picture.Assign(FJpegImage.Bitmap);
end
else
Picture.Assign(nil);
end;
except
Picture.Assign(FDataLink.Field);
end
finally
bs.Free;
end;
end;
end;
 
图象存入数据库中,我用blob字段,并用Tblobstream,但图片大小有限制,我
觉得不如用FTP方式存入服务器,用户请求数据时用ftp传给客户端。
 
没有SQL Server ,以下示例在本地数据库中可行:

uses JPEG;

procedure TForm1.SaveBtnClick(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
begin
if not(Table1.State in [dsEdit, dsInsert]) then Table1.Edit;
(Table1.FieldByName('photo') as TBlobField).LoadFromFile(OpenPictureDialog1.FileName);
Table1.Post;
end;
end;

procedure TForm1.ShowBtnClick(Sender: TObject);
var
JP: TJPEGImage;
bs: TBlobStream;
begin
bs := TBlobStream.Create((Table1.FieldByName('photo') as TBlobField), bmRead);
jp := TJPEGImage.Create;
jp.LoadFromStream(bs);
Image1.Picture.Assign(jp);
bs.Free;
jp.Free;
end;
 
接受答案了.
 
后退
顶部