如何在 FMX 应用程序中对 TImage 进行 Base64Encode

问题描述 投票:0回答:1

我需要一种简单的方法将 TImage 的 TBitmap 编码为 Base64 编码表示形式,以便通过 JSON 格式发送。我不想使用 Indy 库,而是想使用当前 Delphi 中内置的库。

delphi encoding base64 firemonkey rad-studio
1个回答
0
投票

我想出了以下有效的方法,它返回 base64 编码的字符串,我将其作为字符串对添加到 TJSONObject 中。

//use NetEncoding
function GetBase64EncodedImage(Bitmap: TBitmap): String;
var
  InputStream : TMemoryStream;
  OutputStream : TMemoryStream;
  StringList: TStringList;
begin
  InputStream := TMemoryStream.Create;
  OutputStream := TMemoryStream.Create;
  StringList := TStringList.Create;
  try
    //Save image to stream
    Bitmap.SaveToStream(InputStream);
    InputStream.Position := 0;
    //Encode the stream
    TNetEncoding.Base64.Encode( InputStream, OutputStream );
    OutputStream.Position := 0;
    StringList.LoadFromStream(OutputStream);
    Result := StringList.Text;
  finally
    InputStream.Free;
    OutputStream.Free;
    StringList.Free;
  end;
end;

我知道可能有一种方法可以消除 TStringList,因此在这里进行有用的添加或代码更改以将 Stream 直接转换为 String 会很好,而不是必须将其加载到 TStringList 以获得更好的结果。如果我找到更有效的方法,我会再次发布。

© www.soinside.com 2019 - 2024. All rights reserved.