delphi fmx jpg 保存数据库 从数据库读取


本文整理自网络,侵删。

 
unit uJpgSaveToData;

interface

uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
    Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtDlgs, Vcl.StdCtrls,
    Vcl.Mask, scGPExtControls, Vcl.ExtCtrls, FireDAC.Stan.Intf, FireDAC.Stan.Option,
    FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def,
    FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.Phys.MSSQL,
    FireDAC.Phys.MSSQLDef, FireDAC.VCLUI.Wait, FireDAC.Stan.Param, FireDAC.DatS,
    FireDAC.DApt.Intf, FireDAC.DApt, cxGraphics, cxControls, cxLookAndFeels,
    cxLookAndFeelPainters, cxStyles, cxCustomData, cxFilter, cxData,
    cxDataStorage, cxEdit, cxNavigator,
    cxDataControllerConditionalFormattingRulesManagerDialog, Data.DB, cxDBData,
    cxGridLevel, cxClasses, cxGridCustomView, cxGridCustomTableView,
    cxGridTableView, cxGridDBTableView, cxGrid, FireDAC.Comp.DataSet, FireDAC.Comp.Client,
    scControls, scGPImages, cxContainer, cxImage, Data.Win.ADODB, cxBlobEdit;

type
    TForm1 = class(TForm)
        edt_JPG_Add: TscGPEdit;
        OpenPictureDialog1: TOpenPictureDialog;
        SaveToData: TscButton;
        ReadImage: TscButton;
        FDConnection1: TFDConnection;
        FDQuery1: TFDQuery;
        DataSource1: TDataSource;
        FDQuery2: TFDQuery;
        cxGrid1DBTableView1: TcxGridDBTableView;
        cxGrid1Level1: TcxGridLevel;
        cxGrid1: TcxGrid;
        editId: TscGPEdit;
        cxGrid1DBTableView1ID: TcxGridDBColumn;
        cxGrid1DBTableView1Photo: TcxGridDBColumn;
        cxGrid1DBTableView1NameBM: TcxGridDBColumn;
        scButton1: TscButton;
        Image2: TImage;
        Image1: TImage;
        scMemo1: TscMemo;
        procedure edt_JPG_AddRightButtonClick(Sender: TObject);
        procedure SaveToDataClick(Sender: TObject);
        procedure ReadImageClick(Sender: TObject);
        procedure scButton1Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

var
    Form1: TForm1;

implementation

{$R *.dfm}
uses
    jpeg;

procedure TForm1.ReadImageClick(Sender: TObject);
// 读取图片
var
    MemoStream: TMemoryStream;
    Jpg: TJPEGImage;
begin
    FDQuery1.Close;
    FDQuery1.SQL.Text := 'SELECT * FROM bTest where NameBM =' + editId.Text;
   // 查询图片
    FDQuery1.Open;
    if not FDQuery1.FieldByName('photo').IsNull then
    begin
        MemoStream := TMemoryStream.Create;
        Jpg := TJPEGImage.Create;
        TBlobField(FDQuery1.FieldByName('Photo')).SaveToStream(MemoStream);    // 显示的转换为BlobField并保存到内存流
        MemoStream.Position := 0;
        Jpg.LoadFromStream(MemoStream);    // 加载图片
        image2.Picture.Assign(Jpg);
    end
    else
    begin
        image2.Picture := nil;
    end;
    MemoStream.Free;
    Jpg.Free;

end;

procedure TForm1.SaveToDataClick(Sender: TObject);
var
    MemoStream: TMemoryStream;
    Jpg: TJPEGImage;
begin
    try
        MemoStream := TMemoryStream.Create; //  创建内存流
        Jpg := TJPEGImage.Create;
       // Image1.Picture.Graphic.SaveToStream(MemoStream);   // 将图片保存到内存流中
        Image1.Picture.Graphic.SaveToStream(MemoStream);
        MemoStream.Position := 0;
        scMemo1.Lines.LoadFromStream(MemoStream);
        FDQuery1.Close;
        FDQuery1.SQL.Clear;
        FDQuery1.SQL.Add('Insert into bVIP_Member (NameBM,TouX) values (:NameBM,:Photo)');
        FDQuery1.Params.ParamByName('NameBM').Value := editId.Text;
        FDQuery1.Params.ParamByName('Photo').LoadFromStream(MemoStream, ftBlob); // 读取保存的内存图    ftBlob
        FDQuery1.ExecSQL;
        Caption := '保存成功。';
    finally
        Jpg.Free;
        MemoStream.Free;     // 释放内存流
    end;
 //或者  TBlobField(FDquery1.FieldbyName('Field').LoadFromSteam(MemoStream));
end;

procedure TForm1.scButton1Click(Sender: TObject);
begin
    cxGrid1DBTableView1.DataController.RefreshExternalData;
end;

procedure TForm1.edt_JPG_AddRightButtonClick(Sender: TObject);
begin
    OpenPictureDialog1.Title := '打开图片';
    if OpenPictureDialog1.Execute then
    begin
        Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
        edt_JPG_Add.Text := OpenPictureDialog1.FileName;
    end;
end;

end.

相关阅读 >>

Delphi xe5 android 捕获几个事件

Delphi 如何检测你的电脑日期或时间的变化

Delphi spy++ 拖拽功能

Delphi 学习 sql 语句 - insert、update、delete

Delphi 打开android应用信息

Delphi 判断文件是否正在被使用

Delphi trayicon1如何把窗体关闭到系统托盘

Delphi winsock远程唤醒计算机的函数

Delphi 输出用空格对齐字符串的函数

Delphi 打开"我的电脑"等特殊文件夹

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...