老问题了,请教各位大侠,如何把Jpg格式的图片存放到数据库中?不要把Jpg转为Bmp,只要直接存Jpg!(100分)

  • 主题发起人 主题发起人 大花鸡
  • 开始时间 开始时间

大花鸡

Unregistered / Unconfirmed
GUEST, unregistred user!
请教各位大侠,如何把Jpg格式的图片存放到数据库中?不要把Jpg转为Bmp,只要直接存Jpg!
我看过以前的贴子,千中元大侠有过这样的问题,您能说说你是如何解决Jpg格式的储储?
谢谢!!
如果谁能解决这个问题我另送200分!
顺便问一句,大富翁现在还 是每天送5分吗?我为什么一直没加分??
 
不是有JPEGIMAGE這個單元嗎?
用TJpegimage可以直接引用JPG格式的圖片。
再將圖片寫到流裡面以流的方式保存到數據庫。
 
你看这个贴子不行吗?698968,如果你要显示,可以先转成BMP显示出来,不要显示可以直接用
流的方式保存进去.原理都一样,我就是这样保存的.
http://www.delphibbs.com/delphibbs/dispq.asp?lid=698968
 
我不想转换,因为BMP比Jpg大太多了。
 
var
str:tmemorystream;
jep:tjpegimage;
begin
str:=tmemorystream.create;
jep:=tjpegimage.create;
jep.LoadFromFile('c:/ss.jpg');
str.Position:=0;
query2.SQL.text:='insert into animals(name,bmp)values(:name,:bmp)';
query2.ParamByName('name').asstring:=ss;
query2.ParamByName('bmp').LoadFromStream(str,ftblob);
query2.ExecSQL;
end;
 
你还是没有搞明白,你存进去的肯定是JPG格式呀,只是我说你要显示出来的话,要转换成BMP.
如果你到时直接将其从数据库里读出来,再SAVETOFILE成JPG文件,就完全是JPG文件啦.
你仔细看看那段代码.只要你读懂了,你自然就理解到了,其实弄懂了后也会觉得很简单.
 
请问,下面的代码所存储到数据库中的是什么格式?我真是不明白。
if OpenPictureDialog1.execute then
begin
ADODataSet1.edit;
DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
DBImage1.CopyToClipboard;
DBImage1.PasteFromClipboard;
ADODataSet1.Post;
end;
 
zhangkan:
我试了你的方法,也明白了。可是出错!----
project project1.exe raised exception class EStackOverflow with message'Stack
overflow'.Process stopped.Use Step or Run …
为什么?
 
你的代码存的是 BMP 格式!
下面的代码是 JPG 格式:
// 存储 JPG 图片到数据库 , 同时显示在 FOOTIMAGE 控件上 FootImage:TImage
var
tempStream:TMemoryStream;
JpgPic:TJpegImage;

S:String;
begin
try
JpgPic:=TJpegImage.Create;
tempStream:=TMemoryStream.Create;
tempStream.Clear;
Table.Edit;
JpgPic.LoadFromFile(OpenDialog.FileName);
FootImage.Picture.bitmap.assign(JpgPic);
JpgPic.SaveToStream(tempStream);
TBlobField(Table.FieldByName('图象')).LoadFromStream(tempStream) ;
Table.Post;
finally
JpgPic.Free;
tempStream.Free;
end;
end;

// 显示数据库中的 JPG 图象 ,FootImage : TImage
var
MyJpeg:TJpegImage;
MyStm:TMemoryStream;
begin

if not Table.FieldByName('图象').IsNull then
begin
try
MyJpeg:=TJpegImage.Create;
MyStm:=TMemoryStream.Create;
MyStm.Clear;
TBlobField(Table.FieldByName('图象')).SaveToStream(MyStm);
MyStm.Position:=0;
MyJpeg.LoadFromStream(MyStm);
FootImage.Picture.BitMap.Assign(MyJpeg);
finally
MyJpeg.Free;
MyStm.Free;
end;

end;
 
procedureTform1.Savebtnclick(sender:TObject);
var
graphic1:TGraphic;
begin

graphic1:=TGraphic.Create;
graphic1.loadfromfile(opendialog1.filename);
table1.insert;
table1.fieldbyname('name').asstring:=edit1.text;
table1.fieldbyname('telephon').asstring:=edit2.text;
table1.fieldbyname('address').asfloat:=edit3.text;
table1.fieldbyname('zip').asfloat:=edit4.text;
table1.fields[4].assign(graphic1);
table1.post;
graphic1.free;
end;
 
To:zhihuali,
你的程序可以用,不过也有错误,请问:JPG Error:#52是什么意思?
 
接受答案了.
 
后退
顶部