如何将图像转换为base64编码– Delphi 10



 unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls,
  Vcl.ExtCtrls,
  {Added Units}
  Vcl.Imaging.jpeg,
  Vcl.Imaging.pngimage,
  IdCoderMIME;

type
  TForm1 = class(TForm)
    edt1: TEdit;
    btn1: TButton;
    img1: TImage;
    grp1: TGroupBox;
    redt1: TRichEdit;
    btn2: TButton;
    dlgOpen1: TOpenDialog;
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
begin
  if dlgOpen1.Execute then
  begin
    edt1.Text := dlgOpen1.FileName;
    img1.Picture.LoadFromFile(edt1.Text);
  end;
end;

function Base64_Encoding(FileName: string): string;
var
  stream: TFileStream;
  base64: TIdEncoderMIME;
  output: string;
begin
  if (FileExists(FileName)) then
  begin
    try
      begin
        base64 := TIdEncoderMIME.Create(nil);
        stream := TFileStream.Create(FileName, fmOpenRead);
        output := TIdEncoderMIME.EncodeStream(stream);
        stream.Free;
        base64.Free;
        if not(output = '') then
        begin
          Result := output;
        end
        else
        begin
          Result := 'Error';
        end;
      end;
    except
      begin
        Result := 'Error'
      end;
    end;
  end
  else
  begin
    Result := 'Error'
  end;
end;

procedure TForm1.btn2Click(Sender: TObject);
var
  dir: string;
  image: string;
  FileName: string;
  extention: string;
  img_encoded: string;
  img_html_generate: string;
  output: string;
  html_generate: TStringList;

begin
  dir := GetCurrentDir;
  image := edt1.Text;

  if (FileExists(image)) then
  begin
    FileName := ExtractFileName(image);

    extention := ExtractFileExt(image);

    extention := StringReplace(extention, '.', '',
      [rfReplaceAll, rfIgnoreCase]);

    FileName := StringReplace(FileName, '.' + extention, '',
      [rfReplaceAll, rfIgnoreCase]);

    FileName := StringReplace(FileName, ' ', '', [rfReplaceAll, rfIgnoreCase]);

    if (extention = 'jpg') or (extention = 'png') then
    begin
      try
        begin
          img_encoded := Base64_Encoding(image);

          if not(img_encoded = '') then
          begin
            img_html_generate := ' ';

            redt1.Clear;
            redt1.Lines.Add(img_html_generate);
            redt1.Lines.Add('

SwePC Base64 Image Encoder

' + sLineBreak + '

www.swepc.se/blog

'); output := redt1.Text; html_generate := TStringList.Create; try html_generate.Add('' + sLineBreak + '' + sLineBreak + output + sLineBreak + '' + sLineBreak + ''); html_generate.SaveToFile(dir + '\' + 'Base64_img.htm'); finally html_generate.Free; end; MessageBox(Form1.Handle, PChar('Encoding Done and HTML file created!'), PChar('SwePC Base64 Image Encoder'), MB_ICONINFORMATION); end else begin MessageBox(Form1.Handle, PChar('An error has occurred in the program'), PChar('SwePC Base64 Image Encoder'), MB_ICONERROR); end; end; except begin MessageBox(Form1.Handle, PChar('An error has occurred in the program'), PChar('SwePC Base64 Image Encoder'), MB_ICONERROR); end; end; end else begin MessageBox(Form1.Handle, PChar('The File extention is not allowed'), PChar('SwePC Base64 Image Encoder'), MB_ICONWARNING); end; end else begin MessageBox(Form1.Handle, PChar('File not Found'), PChar('SwePC Base64 Image Encoder'), MB_ICONWARNING); end; end; procedure TForm1.FormCreate(Sender: TObject); begin redt1.PlainText := True; redt1.MaxLength := $7FFFFFF0; end; end.





联系电话:
020-00000000
联系电话:
020-00000000
联系电话:
020-12345678