SQL数据库中的'照片'字段的数据类型为image长度为16。
利用下面的语句插入照片:
if OpenPictureDialog1.Execute then
dbimage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
利用dbimage2来显示,但是显示时出错!请问为什么?如何做才能显示数据库中的照片?
利用下面的语句插入照片:
if OpenPictureDialog1.Execute then
dbimage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
利用dbimage2来显示,但是显示时出错!请问为什么?如何做才能显示数据库中的照片?
然后:
存到数据库
var
pjpg:tjpegimage;
pic:TMemoryStream;
begin
pjpg:=tjpegimage.Create;
pjpg.LoadFromFile(F:\JPG.jpg);
pic:=TMemoryStream.Create;
pjpg.SaveToStream(pic);
pic.Position:=0;
TBlobField(dataset.FieldByName('Img')).LoadFromStream(pic);
dataset.post;
pic.Free;
pjpg.free;
end;
从数据库取出
var
pjpg:tjpegimage;
pic:TMemoryStream;
begin
pjpg:=tjpegimage.Create;
pic:=TMemoryStream.Create;
TBlobField(dataset.FieldByName('Img')).savetoStream(pic);
pic.positon:=0;
pjpg.LoadFromStream(pic);
image.graphi.bmp.assign(pjpeg);
end;
MS_JpegStream:TMemoryStream;
M_BitMap:TBitMap;
M_Jpeg:TJpegImage;
procedure TinsertForm.buttonSelectClick(Sender: TObject);
var
filename:string;
begin
image1.Picture.LoadFromFile('');
if OpenDialog1.Execute then
begin filename:=extractfileext(OpenDialog1.FileName); image1.Picture.LoadFromFile(OpenDialog1.FileName);
MS_JpegStream:=TMemoryStream.Create;
M_BitMap:=TBitMap.Create;
M_Jpeg:=TJpegImage.Create;
if (filename='.bmp') or (filename='.BMP') then
begin
M_BitMap.LoadFromFile(OpenDialog1.FileName);
M_Jpeg.Compress;
M_Jpeg.Assign(M_BitMap);
end
else if (filename='.jpg') or (filename='.JPG') then
begin
M_Jpeg.LoadFromFile(OpenDialog1.FileName);
end;
M_Jpeg.SaveToStream(MS_JpegStream);
end;
end;procedure TinsertForm.btnSaveClick(Sender: TObject);
begin
//插入新的记录
try
adoquery1.close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('insert into hm_jc_dxal(tupian)values');
adoquery1.SQL.Add('(:tupian)');
adoquery1.Parameters.ParamByName('tupian').LoadFromStream(MS_JpegStream,ftblob);
adoquery1.ExecSQL;ShowMessage('资料成功保存!');
MS_JpegStream.Free;
M_BitMap.Free;
M_Jpeg.Free;
except
ShowMessage('资料保存失败!!');
end;
end;
end;
MyJPEG : TJPEGImage;
MS: TMemoryStream;
begin
openpicturedialog1.Execute;
if openpicturedialog1.FileName<>'' then
begin
image.Picture.LoadFromFile(openpicturedialog1.FileName);
openpicturedialog1.FileName:='';
MyJPEG := TJPEGImage.Create;
try
with MyJPEG do
begin
Assign(Image.Picture.Graphic);
MS:=TMemoryStream.create;
SaveToStream(MS);
MS.Position:=0;
adotable1.Append;
TBlobField(adotable1.FieldbyName('photo')).LoadFromStream(MS);
adotable1.Post;
messagebox(getactivewindow(),'图像保存完毕!','保存',mb_ok);
image.Picture.CleanupInstance;
end;
finally
MyJPEG.Free;
end;
end;
显示图片
var
tempstream:TStringStream;
tempjpeg:TJPEGImage;
begin
try
tempstream:=TStringStream.Create(' ');
TBlobField(adodataset1.FieldByName('photo')).SaveToStream(tempstream);
tempstream.Position:=0;
tempjpeg:=TJPEGImage.Create;
tempjpeg.LoadFromStream(tempstream);
DBImage1.Picture.Bitmap.Assign(tempjpeg);
finally
tempstream.Free;
tempjpeg.Free;
end;
end;