Delphi Base64字符串转换图片

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;

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值