如何把jpg作为二进制流文件存在oracle中(作为blob 最好是用long raw)(5分)

  • 主题发起人 主题发起人 lyy_whu
  • 开始时间 开始时间
L

lyy_whu

Unregistered / Unconfirmed
GUEST, unregistred user!
mstream:=TMemorystream.Create;
mstream.WriteBuffer(STR_MapFilePointer^,temp_ms.wparam);
mstream.SaveToFile('c:/photo1.bmp');
dbimage1.picture.LoadFromFile('c:/photo1.bmp');//得到的是一个dib 无法作为bmp显示
dbimage1.picture.Bitmap.SaveToStream(mstream);
jpgstream:= TJPEGImage.Create;
jpgstream.Assign(dbimage1.picture.bitmap);
jpgstream.CompressionQuality:=1;
jpgstream.Compress;
jpgstream.SaveToStream(mstream);
dbimage1.Picture.Assign(jpgstream);
jpgstream.SaveToFile('c:/photo1.JPG');

oratable1.open;
oratable1.UpdateRecordTypes:=[rtInserted];
oratable1.insert;
oratable1.FieldByName('id).asstring:=id.text;
oratable1photo.LoadFromFile('c:/photo1.bmp');
oratable1.post;
oratable1.ApplyUpdates;
oratable1.Close;

我很想把一个jpg存在数据库中。但是我用oratablephoto(字段名) 因为它是blob
所以我只能存入bmp.. 如何才能把jpg存入数据库 并且通过dbimage显示
 
你可以直接用LoadFromFile存入数据库,
不需要解码!我正好现在也在用
不过我用的是SQL Server,没试过Oracle应该是一样的!
 
有控件可以实现你的功能。
自动侦测Blob字段的图片类型,然后显示,目前支持bmp、jpg、Gif(需要GifImage.pas)
 
程序,在ORACLE中没有问题。
TMemoryStream *Field;
Field = TMemoryStream.Create;
Field.LoadFromFile(文件地址);
Query.Close;
Query.SQL.Clear;
Query.SQL.Add(insert into table(image,...) values(:image,...));
Query.Prepare;
Query.Items[0].LoadFromStream(Field);
Query.ExecSQL;
Field.Free;

程序中的image就是你要添加的JPG文件字段。
 
我现在采用的方式
因为我得到的是一个dib (没有头。缺了14个字节)然后我转化成jpg.
我感觉好像是一个不完整的jpg 。
如果我用文件loadfromfile 是可以存入数据库 但是不能读取
提示为bitmap is not volid(好像是这个词吧)。
我只能用流方式存入
tblobfield(oraquery1photo).loadfromstream(mstream));
然后ms:Tstream
ms:=oraquery1.createBlobStream(oraquery1photot,bmread);
image1.picture.bitmap.loadfromstream(ms);

看看是不是我的jpg转化有问题?
dbimage1.picture.loadfrom(c:/test.bmp);//一个dib .无法用acdsee观看。
dbimage1.picture.bitmap.savetostream(mstream);
jpgstream:=Tjpgimage.create;
jpgstream.assign(dbimage1.picture.bitmap);
jpgstream.compressionQuality:=1;
jpgstream.compress;
jpgstream.savetostream(mstream);//这个mstream存入数据库。。
 
作为流存入数据库中,不管是什么都可以存读的。与文件格式、是否损坏没有关系。你
的图象用ACDSEE都打不开,说明你的图象不是标准的JPG格式,DELPHI是显示不了的。
 
后退
顶部