数据库中存取图片

本文介绍如何使用 Delphi 将 JPEG 图像保存到数据库的 Blob 字段,并从数据库读取图像显示到应用程序界面。提供了两个示例过程,分别演示了将 Image 控件中的图像保存到数据库以及从数据库读取图像到另一个 Image 控件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
  1. uses jpeg;
  2. //保存Image1中的图象至数据库 :
  3. var 
  4. Ms:TmemoryStream;
  5. jpg:Tjpegimage;
  6. begin
  7. ms:=TmemoryStream.Create;
  8. Jpg.Assign(Image1.Picture.Graphic);
  9. Jpg.SaveToStream(Ms) ;
  10. Ms.Position :=0;
  11. ADOquery1.append;
  12. TBlobField(ADOquery1.FieldByName('img')).LoadFromStream(Ms);
  13. ADOquery1.Post;
  14. Ms.Free ;
  15. jpg.free;
  16. end;
  17. 从数据库中读取图象到image2中:
  18. Var
  19. Ms:TStringStream;
  20. jpg:Tjpegimage;
  21. begin
  22. Ms:=TstringStream.Create('');
  23. TBlobField(ADOquery1.FieldByName('img')).SaveToStream(Ms);
  24. Ms.Position :=0;
  25. Jpg.LoadFromStream(Ms);
  26. Image2.Picture.Assign(Jpg);
  27. Ms.Free;
  28. jpg.free;
  29. end;
  30. 例子2
  31. procedure TForm1.Button1Click(Sender: TObject); //插入圖片過程 
  32. var 
  33. testStream:TMemoryStream; 
  34. begin 
  35. try 
  36. testStream := TMemoryStream.Create; //創建內存流 
  37. Image1.Picture.Graphic.SaveToStream(testStream);  //將圖片保存至內存流中 
  38. adoquery1.Close; 
  39. adoquery1.SQL.Clear; 
  40. adoQuery1.SQL.Add('Insert into test (id,photo) values (:id,:photo)'); //進行插入操作 
  41. adoquery1.Parameters.ParamByName('id').Value := '003'
  42. adoQuery1.Parameters.ParamByName('photo').LoadFromStream(testStream,ftBlob); //讀取保存的內存圖 
  43. adoquery1.ExecSQL; 
  44. finally 
  45. testStream.Free;   //釋放內存流 
  46. end
  47. end
  48. procedure TForm1.Button2Click(Sender: TObject); //讀取圖片過程 
  49. var 
  50. mStream:TMemoryStream; 
  51. JpgFile:TjpegImage; 
  52. begin 
  53. if not ADOQuery1.FieldByName('photo').IsNull then begin ; 
  54. mStream:=TMemoryStream.Create ; 
  55. JpgFile:=TjpegImage.Create ; 
  56. TBlobField(ADOQuery1.FieldByName('photo')).SaveToStream(mStream);  //顯示的轉換為BlobFiled並保存至內存流 
  57. mStream.Position :=0
  58. jpgfile.LoadFromStream(MStream); 
  59. image2.Picture.Assign(JpgFile); 
  60. end 
  61. else begin 
  62. image2.Picture :=nil
  63. end
  64. end;  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值