写入图片
procedure TForm1.Button1Click(Sender: TObject);
var ms: TStream;
bm: TJpegImage;
begin
if OpenPictureDialog1.Execute then
begin
table1.Open;
table1.Append;
bm := TJpegImage.Create;
bm.LoadFromFile(OpenPictureDialog1.FileName);
image1.Picture.Graphic := bm;
Table1.Edit;
ms := Table1.CreateBlobStream(table1.FieldByName('test'), bmWrite);
image1.Picture.Graphic.SaveToStream(ms);
Table1.Post;
bm.Free;
end;
ms.Free;
end;
从数据库中读取图片
procedure TForm1.Button2Click(Sender: TObject);
var ms: TStream;
bm :TjpegImage;
begin
if table1.Active then
begin
bm := TjpegImage.Create;
ms := Table1.CreateBlobStream(table1.FieldByName('test'), bmRead);
bm.LoadFromStream(ms);
image1.Picture.Assign(bm);
bm.Free;
ms.Free;
end;
end;
//保存
procedure TForm1.ImageIntoDBBitBtnClick(Sender: TObject);
begin
try
with Query1 do
begin
close;
sql.clear;
sql.add('insert into img (imga) values(:imag)');
end;
try
if FileName<>'' then
ParamByName('Img').LoadfromFile(FileName,ftGraphic)
else
ParamByName('Img') .asBlob:='';
Query1.ExecSQL;
except
ShowMessage('图片保存出错!');
exit;
end;
except
end;
end;
//读取
procedure TForm1.ImageFromDBBitBtnClick(Sender: TObject);
var
m_jpegstream:tmemorystream;
begin
with Query1 do
begin
close;
sql.clear;
sql.Add('select imga from img');
try
Open;
except
exit;
end;
end;
if (Query1.FieldByName('imga') as tblobfield).asstring='' then
begin
exit;
end
else
begin
try
try
m_jpegStream:=TMemoryStream.Create;
(Query1.fieldbyname('imga') as TBlobField).SaveToStream(m_JpegStream);
m_JpegStream.Position:=0;
try
image2.Picture.Graphic:=nil;
image2.Picture.Graphic:=TJpegImage.Create;
image2.Picture.Graphic.LoadFromStream(m_JpegStream); //读Jpeg
except
Image2.Picture.Bitmap.LoadFromStream(m_JpegStream); //读Bmp
end;
except
end;
finally
m_JpegStream.Free;
Query1.Close;
Query1.UnPrepare;
end;
end;
end;