不如转换成*.jpg图象,然后再存储。
我这有个例子:用Image存储,并且能够显示出来!你可以稍微改动一下。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DB, ADODB, Grids, DBGrids, Menus,Jpeg;
type
TForm1 = class(TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Image1: TImage;
PopupMenu1: TPopupMenu;
LoadPic: TMenuItem;
deletepic: TMenuItem;
saveAs: TMenuItem;
procedure LoadPicClick(Sender: TObject);
procedure deletepicClick(Sender: TObject);
procedure saveAsClick(Sender: TObject);
procedure DataSource1DataChange(Sender: TObject; Field: TField);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.LoadPicClick(Sender: TObject);
var
pic:TPicture;
jpeg:TJPEGImage;
begin
datasource1.dataset.edit;
if(opendialog1.Execute) then
begin
pic:=tpicture.Create;
jpeg:=TJPEGImage.Create;
try
pic.LoadFromFile(opendialog1.FileName);
if pic.Bitmap.Empty=false then
jpeg.Assign(pic.Bitmap)
else
jpeg.loadfromfile(opendialog1.FileName);
datasource1.dataset.fieldbyname('photo').assign(jpeg);
finally
pic.Free;
jpeg.free;
end;
end;
end;
procedure TForm1.deletepicClick(Sender: TObject);
begin
datasource1.dataset.edit;
datasource1.dataset.fieldbyname('photo').assign(nil);
datasource1.dataset.post;
end;
procedure TForm1.saveAsClick(Sender: TObject);
begin
if(savedialog1.Execute)then
image1.Picture.Graphic.SaveToFile(savedialog1.FileName);
end;
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
var
jpeg:TJPEGImage;
begin
if datasource1.DataSet.FieldByName('photo').IsNull=false then
begin
jpeg:=tjpegimage.create;
try
jpeg.assign(datasource1.DataSet.FieldByName('photo'));
image1.Picture.Assign(jpeg);
finally
jpeg.free;
end;
end
else
image1.Picture.Assign(nil);
end;
end.