function Base64ToStr(const Base64: string): string;
var
I, J, K, Len, Len1: Integer;
B4: array[0..3] of Byte;
begin
if Base64 = '' then
begin
Result := '';
Exit;
end;
Len := Length(Base64);
if Len and 3 <> 0 then
raise Exception.Create('Invalid Base64 length');
Len1 := (Len shr 2) * 3;
SetString(Result, nil, Len1);
I := 1;
J := 1;
while I <= Len do
begin
for K := 0 to 3 do
begin
case Base64[I] of
'A'..'Z': B4[K] := Ord(Base64[I]) - 65;
'a'..'z': B4[K] := Ord(Base64[I]) - 71;
'0'..'9': B4[K] := Ord(Base64[I]) + 4;
'+': B4[K] := 62;
'/': B4[K] := 63;
'=': B4[K] := 0;
else raise Exception.CreateFmt('#%d: Invalid char in Base64', [Ord(Base64[I])]);
end;
Inc(I);
end;
Result[J] := Chr((B4[0] shl 2) or (B4[1] shr 4));
Result[J + 1] := Chr((B4[1] shl 4) or (B4[2] shr 2));
Result[J + 2] := Chr((B4[2] shl 6) or B4[3]);
Inc(J, 3);
end;
I := Pos('=', Base64);
if I <> 0 then
begin
I := Len - I + 1;
Delete(Result, Len1 - I + 1, I);
end;
end;
procedure TForm1.btn3Click(Sender: TObject);
var
picStr: string;
gifStr: string;
ms: TMemoryStream;
begin
picStr := 'R0lGODlhbQA3AOMAAC0tMDs8Qz1CSUA/RVtbXnp7hKCgoru8wr7Dx87P0N7d4t7j5uDf4/39/gAAAAAAACH5BAEAAA0ALAAAAABtADcAAAT+sMlJq7046827/2DYHIe4LYuprl8BACVLHUShyHjeMMFb6ArCy6ArqhQ9A'
+ 'DGXGPgYxugHMRwVCEuVIVlISb8aF2HnBAwSK0KvgLYgEODvQl1iCF7jo5MAtcwJMXFFBgAEXkIwK4QCbRYHLwNZgjJzAz8SagFeIgtOlxUpBg54gZMrCAEDcDtCnyIFAowYDC4vAK5RfTIElhOLCQgFlpscwmcYc7eEZs'
+ 'Q6CwcFBggJBwzNHUgEbXMBP4gBjSc+CQaSEstwBQGaUglCagM9NQfXGQYCWXYECMuF9RdUBFwZQOCGhGd7UGxhF6WfrYd8OiCoQYFQjSSJOixQt85WFhf+3dAkyxNlYo1o5QwgMnfBHYBVDRJgfBGAJTJ1tricA9AtxcY'
+ 'eNqV42aiqWCEKtQqts+EhaTcahVQGoHguAL5/cRR02ZDgTsSYSS4KlMZBgYBR+GJ+M5NlYk1TK5J26YrnXiGvujCgAiCrKk98ClSqUYI1V4gDZcyQoxmsR5kABjME6TVhgQFLJQb7gCuBBiAPye4U0jpk4cMBCg4YKFUh'
+ 'QYJr1hosEM033AUFb3IkjZyBgZDVVcipfvgCH6K+IBYEg0iBgWoDVwRgDAqiFuQKCJptMZSgimyHgwkI6YHcA61YoiNRG0icOGsTtQzJDkwg7QQab2UqOSe9UDSe8dj+gotG5dAwyl080ZRKPB0VkpcK8akU4GYSuNONB'
+ 'GYlMhseCNDyUA/gfIACNdDRRhNB8ySgAAooKPBaCAu4Ns2IiOTkxDATiNFGhnA88kIJW3jUSmEHkSMeRj2MYhUbUbhkSzw1ThXNAS9OgMpbFUqHhjufBdnNG6m8VyF00SVmyZTj2VbEATPhkQR1ybgiE0NemBaDC1tN4N'
+ 'wVIEKCxYwUCCEAkSwcIEANq2W3DHUNFFBAXt0xtBOFMgnAmzCnTYnVO5OsWMFlWGKgInZ8beKbR7Kp48oCxH3GgRokcTaCJ4eV6suH5UgnyQIY5fnqVLJOMOeAG6iTRxDt2SIAa9D+GaBmGAIFi6EABBGK1FHLRTXeQ/g'
+ '8+MqF0jbAiwDeatAKXWbAESMCj5FiLQaqhtuoGZG16Fqzm2xYgI8ZdTaVao9hASG40nqWEi/tRVLZHdLcIecVMVz2EEwgqEEsJQgYtEBq5Than4LJ0hTInCUAs4lK/TaQGkdSbtMBLBezAJJ4/SkLCYqIrkbCFZKwGYC6'
+ 'FeGBAWkJiidwsdEaoR9xGIkXTQLlYuCzbS4VlQEsxC2LdMwq8EvTSau9awFI4bgECJHkmMh1o5QVsZF4q1W5C09tuBMPk6Dhd/TVbcsLQgLRTBDEPipYK8zafmcgtg6HJ+54CwQ/LjkGWyA+eeIjlV+ueQWGWr65tE3E+'
+ 'vnkvok+uuTlnK766qy37vrrsMcuawQAOw==';
gifStr:=Base64ToStr(picStr);
ms := TMemoryStream.Create;
try
ms.Write(Pchar(gifStr)^,Length(gifStr));
ms.Position:=0;
ms.SaveToFile('1.gif');
img1.Picture.LoadFromFile('1.gif');
finally
ms.Free;
end;
end;
Delphi Base64字符串转换图片
最新推荐文章于 2024-08-23 23:59:05 发布