Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works

Random project

Base64Lib

⚡ Biblioteca de codificação e decodificação de dados em Base64.

View on GitHub

Anyone may press Interesting, signed in or not. It helps others find this project.

Member rating

No ratings yet.

Sign in to rate this project.

README

</br>

</br>

IPGeolocation

</br>

Base64Lib

Base64Lib é uma biblioteca de codificação e decodificação de dados em Base64.

Implementado na linguagem Delphi, utiliza o conceito de fluent interface para guiar no uso da biblioteca, oferece uma interface simples e intuitiva, facilitando a codificação e decodificação em Base64, abrangendo desde a manipulação de strings até a conversão de tipos complexos.

Essa biblioteca é ideal para desenvolvedores Delphi que buscam uma solução robusta, flexível e eficiente para codificação e decodificação de dados em Base64.

Para mais informações, consultar Wiki.

Recursos

  • Facilidade de Integração: Com uma interface amigável e documentação detalhada, a Base64Lib é fácil de integrar em qualquer projeto.
  • Flexibilidade: Base64Lib suporta diferentes tipos de dados, abrangendo desde strings até tipos complexos(TBitmap, TPicture, TStream, TBytes e etc.), permitindo uma ampla gama de aplicações, desde comunicação entre sistemas até armazenamento.
  • Exemplos de uso: Repositório com diversos exemplos de uso da biblioteca, por exemplo, VCL, FMX e um servidor de aplicação em Horse. </br>

[!WARNING]
Para os projetos em Firemonkey definir a diretiva de compilação HAS_FMX em conditional defines:

IPGeolocation

⚙️ Instalação Automatizada

Utilizando o Boss (Dependency manager for Delphi) é possível instalar a biblioteca de forma automatizada.

pascal
boss install https://github.com/antoniojmsjr/Base64Lib

⚙️ Instalação Manual

Se você optar por instalar manualmente, basta adicionar as seguintes pastas ao seu projeto, em Project > Options > Delphi Compiler > Target > All Configurations > Search path

pascal
..\Base64Lib\Source

⚡️ Uso da biblioteca

Os exemplos estão disponíveis na pasta do projeto:

pascal
..\Base64Lib\Samples

Codificação

delphi
Uses
  Base64Lib;

Text >> Base64

delphi
var
  lEncode: IEncodeParse;
  lBase64: string;
  lBase64Size: Int64;
  lBase64MD5: string;
begin
  lEncode := TBase64Lib
    .Build
      .Encode
        .Text('Base64Lib');

  lBase64 := lEncode.AsString;
  lBase64Size := lEncode.Size;
  lBase64MD5 := lEncode.MD5;
end;

Image >> Base64

delphi
var
  lEncode: IEncodeParse;
  lBase64: string;
  lBase64Size: Int64;
  lBase64MD5: string;
begin
  lEncode := TBase64Lib
    .Build
      .Encode
        .Image(Timage.Picture); // VCL

  lEncode := TBase64Lib
    .Build
      .Encode
        .Image(Timage.Bitmap); // FMX

  lBase64 := lEncode.AsString;
  lBase64Size := lEncode.Size;
  lBase64MD5 := lEncode.MD5;
end;

Decodificação

Base64 >> Text

delphi
var
  lDecode: IDecodeParse;
  lText: string;
  lSize: Int64;
  lMD5: string;
begin
  lDecode := TBase64Lib
    .Build
      .Decode
        .Text('QmFzZTY0TGli');

  if not Assigned(lDecode) then
    Exit;

  lText := lDecode.AsString;
  lSize := lDecode.Size;
  lMD5 := lDecode.MD5;
end;

Base64 >> Image

VCL

delphi
var
  lDecode: IDecodeParse;
  lPicture: TPicture;
  lSize: Int64;
  lMD5: string;
begin
  lDecode := TBase64Lib
    .Build
      .Decode
        .Text('QmFzZTY0TGli');

  if not Assigned(lDecode) then
    Exit;

  lPicture := lDecode.AsPicture;
  try   
    TImage1.Picture.Assign(nil);
    TImage1.Picture.Assign(lPicture);
  finally
    lPicture.Free;
  end;

  lSize := lDecode.Size;
  lMD5 := lDecode.MD5;
end;

FMX

delphi
var
  lDecode: IDecodeParse;
  lBitmapStream: TStream;
  lBitmap: TBitmap;
  lItem: TCustomBitmapItem; // FMX - Unit FMX.MultiResBitmap
  lRect: TRect; // FMX
  lSize: Int64;
  lMD5: string;
begin
  lDecode := TBase64Lib
    .Build
      .Decode
        .Text('QmFzZTY0TGli');

  if not Assigned(lDecode) then
    Exit;

  lBitmap := lDecode.AsBitmap;
  try
    lRect := TRect.Create(TPoint.Zero);
    lRect.Left := 0;
    lRect.Top := 0;
    lRect.Width := lBitmap.Bounds.Width;
    lRect.Height := lBitmap.Bounds.Height;

    TImage1.MultiResBitmap.Clear;
    lItem := TImage1.MultiResBitmap.ItemByScale(1, False, True);
    lItem.Bitmap.Width := lBitmap.Bounds.Width;
    lItem.Bitmap.Height  := lBitmap.Bounds.Height;
    lItem.Bitmap.CopyFromBitmap(lBitmap, lRect, 0, 0);
  finally
    lBitmap.Free;
  end;

  OU

  lBitmapStream := lDecode.AsStream;
  try
    TImage1.MultiResBitmap.Clear;
    lItem := TImage1.MultiResBitmap.ItemByScale(1, False, True);
    lItem.Bitmap.LoadFromStream(lBitmapStream);
  finally
    lBitmapStream.Free;
  end;

  lSize := lDecode.Size;
  lMD5 := lDecode.MD5;
end;

▶️ Exemplo compilado

Exemplo Base64LibApp

pascal
..\Base64Lib\Samples\Base64LibApp\

https://github.com/user-attachments/assets/eb4e2e51-c590-47de-b03b-68b48083c92c

Exemplo FMX

pascal
..\Base64Lib\Samples\Bitmap\FMX\

https://github.com/user-attachments/assets/222719ca-8b65-4297-b3b4-c654ca0b2114

Servidor REST(VCL)

pascal
..\Base64Lib\Samples\Bitmap\VCL\

https://github.com/user-attachments/assets/2a2b3cd5-5720-456e-a900-5b8c1117dc06

⚠️ Licença

Base64Lib is free and open-source software licensed under the

:arrow_up: Ir para o Topo