teste essa rotina
procedure Base64ToPNG(base64String: string; outputPath: string);
var
dataPos: Integer;
stream: TBytesStream;
png: TPngImage;
begin
// Encontre a posição da primeira vírgula (',') na string base64
dataPos := Pos(',', base64String);
// Verifique se a vírgula foi encontrada e, em seguida, remova o prefixo
if dataPos > 0 then
Delete(base64String, 1, dataPos);
// Crie um stream de bytes a partir da string base64 decodificada
stream := TBytesStream.Create(DecodeBase64(AnsiString(base64String)));
try
// Crie uma imagem PNG a partir do stream
png := TPngImage.Create;
try
stream.Position := 0; // Certifique-se de que o stream está no início
png.LoadFromStream(stream);
// Salve a imagem PNG no arquivo desejado
png.SaveToFile(outputPath);
finally
png.Free;
end;
finally
stream.Free;
end;
end;