我需要一种简单的方法将 TImage 的 TBitmap 编码为 Base64 编码表示形式,以便通过 JSON 格式发送。我不想使用 Indy 库,而是想使用当前 Delphi 中内置的库。
我想出了以下有效的方法,它返回 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 以获得更好的结果。如果我找到更有效的方法,我会再次发布。