//保存 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;
写入图片 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;
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;
BLOBS TO CACHE=64
BLOB SIZE=1024
在哪里设置的???