数据库中怎样实现存入jpg、Gif等图片?数据库为Delphi自带桌面数据库,或SQLSERVER2000。我用了一个Button1、一个OpenPictureDialog1和一个Image1组件,对于按钮的单击事件的代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenpictureDialog1.Execute then
Image1.Picture.LoadFromFile(OpenpictureDialog1.FileName);
end;
我想通过对话框打开一张jpg图片到Image1组件显示,该代码没有成功。
所以存入数据库就谈不上了
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenpictureDialog1.Execute then
Image1.Picture.LoadFromFile(OpenpictureDialog1.FileName);
end;
我想通过对话框打开一张jpg图片到Image1组件显示,该代码没有成功。
所以存入数据库就谈不上了
下面说把图片存入SQL的问题 不知道你是用什么连接的数据库 我是用ADOQuery连接的
var
jpg:TJpegImage;
begin
jpg:=TJpegImage.Create;
jpg.LoadFromFile(OpenPictureDialog1.FileName);
ADOQuery2.Append;
ADOQuery2.FieldByName('图片').Assign(jpg);
ADOQuery2.Post;
jpg.Free;
end;
这样就存到数据库里了
var
PersonPictureStream,SheetPictureStream:TMemoryStream;
PersonPictureExtName,SheetPictureExtName:String;
PersonPictureJPEG,SheetPictureJPEG:TJPEGImage;
PersonPictureBitMap,SheetPictureBitMap:TBitMap;
begin
PersonPictureStream:=TMemoryStream.Create;
SheetPictureStream:=TMemoryStream.Create;
if PersonPicturePath<>'' then
begin
PersonPictureExtName:=ExtractFileExt(PersonPicturePath); //取得图片文件扩展名
if (UpperCase(PersonPictureExtName)='.JPG') or (UpperCase(PersonPictureExtName)='.JPEG') then //转换为大写
begin
try
PersonPictureJPEG:=TJPEGImage.Create;
PersonPictureJPEG.LoadFromFile(PersonPicturePath);
PersonPictureJPEG.SaveToStream(PersonPictureStream);
PersonPictureStream.Position:=0;
finally
PersonPictureJPEG.Free;
end;
end;
if (UpperCase(PersonPictureExtName)='.BMP') then //转换为大写
begin
try
PersonPictureJPEG:=TJPEGImage.Create;
PersonPictureBitMap:=TBitMap.Create;
PersonPictureBitMap.LoadFromFile(PersonPicturePath);
PersonPictureJPEG.Assign(PersonPictureBitMap);
PersonPictureJPEG.CompressionQuality:=10;
PersonPictureJPEG.Compress;
PersonPictureJPEG.SaveToStream(PersonPictureStream);
PersonPictureStream.Position:=0;
finally
PersonPictureBitMap.Free;
PersonPictureJPEG.Free;
end;
end;
TBlobField(DM.PersonQuery.FieldByName('PersonPicture')).LoadFromStream(PersonPictureStream);
end;
DM.PersonQuery.post;