图像字段...(100分)

  • 主题发起人 主题发起人 wangyufan
  • 开始时间 开始时间
W

wangyufan

Unregistered / Unconfirmed
GUEST, unregistred user!
SQLServer的Image类型字段用bmp文件付值可以,Jpg文件出错?
用ADO 和 BDE 连接SQLServer对图像字段有区别吗?
 
image字段应该可以保存任何东西,不过我想是你的这个字段
和 TDBImage 相连了吧? TDBImage 只支持 bmp 格式

 
不是和 TDBImage 相连, 只是付值, bmp文件没问题, jpg文件出错?
 
用以下方法试一试
procedure TForm1.Button1Click(Sender: TObject);

var
Stream1, Stream2 : TBlobStream;
begin
Stream1 := TBlobStream.Create(Table1Notes, bmRead);
try
Table2.Edit;
{ here抯 a different way to create a blob stream }
Stream2 := Table2.CreateBlobStream(Table2.FieldByName('Remarks'), bmReadWrite);
try
Stream2.CopyFrom(Stream1, Stream1.Size);
Table2.Post;
finally
Stream2.Free;
end;
finally
Stream1.Free;

end;
end;
 
我怀疑数据库中保存的是位图,不知道对不对,请大家指教。
在Image控件中如果Load是bmp图片的时候。bitmap属性才可以使用。
否则bitmap属性中完全不是那么回事。
其实用Memo类型都可以保存图片的说。
 
我就是把JPG图片保存到SQLSERVER7.0数据库?如何做?
 
如果用ADO,就要用TADOBlobStream,可以这样写——
procedure TForm1.Button1Click(Sender: TObject);
var
SImage: TADOBlobStream;
begin
ADOTable1.Edit;
SImage := TADOBlobStream.Create(TBlobField(ADOTable1.FieldByName('image')), bmWrite);
SImage.LoadFromFile('D:/Temp/image1.jpg');
SImage.Free;
ADOTable1.Post;
end;
 
还没解决吗?试试引用Jpeg单元的说,有点怀疑。
或者
YourDataSet.Edit;
TBlobField(YourDataSet.FieldByName('FieldName')).LoadFromFile;
 
如果只是保存,不要求回显,那么上面几位富翁的办法可以保存任意格式的文件。
另一种可能是你需要Delphi的DBImage可以同时处理多种类型的图片,这可是个大难题,要么上网查找别人做好的,要么就自己重DBImage组件。
如果想自己重写的话,给你个提示:不仅要重写DBImage,还要重写一个专门的TPICTURE。
 
如果用ADO,可以这样写——
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOTable1.Edit;
TBlobField(ADOTable1.FieldByName('image').LoadFromFile('D:/Temp/image1.jpg');
ADOTable1.Post;
end;
 
我也想知道答案,我可以保存,但怎么读也不对
有一个表Table1,其中有两个字段id(integer型), zs_image(blob型)
我将流中的数据用下面的方法送入字段zs_image[通过控件query1]
var
ms1 : TMemorystream;
ss1 : tstringstream;
begin
.
.
.
//假设ms1, ss1中已经有*.jpg的数据了
//保存数据
Query1.close;
Query1.SQL.clear;
sql_string:='insert into ykcertificate (zs_image,id) Values(:zs_image,:id)'';
Query1.sql.Add(sql_string);
Query1.ParamByName('id').asinteger:=5;
//Query1.ParamByName('zs_image').ASBlob:=ss1.DataString ; //方法1 将ss1存入数据库 Bolb字段'zs_image'
//Query1.ParamByName('zs_image').LoadFromStream(ms1,ftBlob);//方法2 将ms1存入数据库 Bolb字段'zs_image'
query1.ParamByName ('zs_image').setblobdata(ms1.Memory ,ms1.Size );//方法3 将ms1存入数据库 Bolb字段'zs_image'

// query1.Prepare;
query1.ExecSQL;
求[通过控件query1、table1]有几种方法将字段zs_image中数据读出送入流ms1中
 
wangyufan:如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
 
我在ORACLE上做过图象字段的保存,用的也是JPG文件,是用扫描仪扫入的,然后压缩成JPG
格式。存入ORACLE中的LOGN RAW字段中,存入是在VB程序中写入的。显示是在后台用DELPHI
实现的,用的是第三方控件,用该控件也可以进行JPG的写入。如需要,可以找我。
 
用ado 我用过没问题。
with adoquery1 do
begin
close;
sql.clear;
sql.text:='insert into blob values(';
sql.add(':image'+')');
parameters.ParamByName('image').LoadFromFile('文件名及路径',ftblob);
execsql;
end;
 
多人接受答案了。
 
后退
顶部