通过TMemoryStream或TFileStream的话该怎么实现?希望举例说明~~
or 用别的方法实现将图片保存至数据库,最好有例子~~
or 将图片复制到指定的文件夹下,并将其地址保存至数据库,希望能附上代码~~
or ...不管哪种方法,只要能实现就成,希望大家帮忙,感激不尽!!!
or 用别的方法实现将图片保存至数据库,最好有例子~~
or 将图片复制到指定的文件夹下,并将其地址保存至数据库,希望能附上代码~~
or ...不管哪种方法,只要能实现就成,希望大家帮忙,感激不尽!!!
保存Image1中的图象至数据库 :
var
Ms:TmemoryStream;
jpg:Tjpegimage;
begin
ms:=TmemoryStream.Create;
Jpg.Assign(Image1.Picture.Graphic);
Jpg.SaveToStream(Ms) ;
Ms.Position :=0;
ADOquery1.append;
TBlobField(ADOquery1.FieldByName('img')).LoadFromStream(Ms);
ADOquery1.Post;
Ms.Free ;
jpg.free;
end;
和TBlobField(ADOquery1.FieldByName('img')).LoadFromStream(Ms);
的用处分别是什么?第一次接触TMemoryStream,不好意思~
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, jpeg,ADODB, ExtCtrls, StdCtrls, Buttons;type
TForm1 = class(TForm)
btn1: TButton;
Image1: TImage;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
Image2: TImage;
btn2: TBitBtn;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.btn1Click(Sender: TObject);
var
mStream:TMemoryStream;
JpgFile:TjpegImage;
begin
with ADOQuery1 do
begin
Close;
sql.Clear;
SQL.Add('select * from t1 where spmc=''1008''');
Open;
end; if not ADOQuery1.FieldByName('img').IsNull then begin ;
mStream:=TMemoryStream.Create ;
JpgFile:=TjpegImage.Create ;
TBlobField(ADOQuery1.FieldByName('img')).SaveToStream(mStream);//顯示的轉換為BlobFiled並保存至內存流
mStream.Position :=0;
jpgfile.LoadFromStream(MStream);
image1.Picture.Assign(JpgFile);
end else begin
image1.Picture :=nil;
end;
end;procedure TForm1.btn2Click(Sender: TObject);
var
testStream:TMemoryStream;
begin
Image2.Picture.LoadFromFile('C:\Documents and Settings\All Users.WINDOWS\Documents\My Pictures\示例图片\Water lilies.jpg');
try
testStream := TMemoryStream.Create;//創建內存流
Image2.Picture.Graphic.SaveToStream(testStream);//將圖片保存至內存流中
with ADOQuery1 do
begin
Close;
sql.Clear;
sql.Add('Insert into t1 (spmc,img) values (:mc,:photo)');//進行插入操作
Parameters.ParamByName('mc').Value := '1008';
Parameters.ParamByName('photo').LoadFromStream(testStream,ftBlob);//讀取保存的內存圖
ExecSQL;
end;
finally
testStream.Free;//釋放內存流
end;end;
end.
btn1click实现把数据表t1中图片按符合查询条件语句读取到IMAGE1中
图片保存到数据库: {----------将图片保存到数据库中去--------------------}
if OpenDialog1.Execute then begin
TBlobField(ADOQuery1.fieldbyname('xpimg')).loadfromfile(OpenDialog1.FileName);
messagebox(0,'文件裁入完毕','提示',MB_ICONINFORMATION);
end;
显示图片:procedure TForm1.Button4Click(Sender: TObject);
var
pic:tmemorystream;
jpg:TJpegImage;
begin
{------------将图片显示出来--------------------}
pic:=tmemorystream.Create;
jpg:=TJpegImage.Create;
try
with ADOQuery1 do
begin
if not ADOQuery1.fieldbyname('xpimg').IsNull then begin
TBlobField(FieldByName('xpimg')).SaveToStream(pic);
pic.Position:=0;
jpg.LoadFromStream(pic);
Image1.Picture.Bitmap.Assign(jpg);
end;
end; finally
pic.Free;
jpg.Free;
end;
end;
图片另存为:{--------------将数据库中的图片另存为---------------------}
if SaveDialog1.Execute then begin
TBlobField(ADOQuery1.fieldbyname('xpimg')).savetofile(SaveDialog1.FileName);
messagebox(0,'文件导出完毕','提示',MB_ICONINFORMATION);
end;
保存图片:
s:='insert into aaa(pic) values(:pic)';
with inst_qry do begin
close;
sql.Clear;
sql.Add(s);
if pic_img.Picture.Graphic <>nil then
begin
MS_JpegStream:=TMemoryStream.Create;
try
pic_img.Picture.Graphic.SaveToStream(ms_jpegstream);
Parameters.ParamByName('pic').LoadFromStream(MS_JpegStream,ftblob);
finally
MS_JpegStream.Free;
end
end
else Parameters.ParamByName('pic').Value:='0xffff';
execsql;
end; 读取显示图片:
with show_qry do begin
try //显示图片
m_jpegStream:=TMemoryStream.Create;
try
TBlobField(fieldbyname('pic')).SaveToStream(m_JpegStream);
m_JpegStream.Position:=0;
try
pic_img.Picture.Graphic:=nil;
pic_img.Picture.Graphic:=TJpegImage.Create;
pic_img.Picture.Graphic.LoadFromStream(m_JpegStream); //读Jpeg
except
pic_img.Picture.Graphic:=nil;
end;
except
showmessage('读取图片出错!');
end;
finally
m_JpegStream.Free;
end;