/Base64Lib

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

Primary LanguagePascalMIT LicenseMIT

Maintained YES Memory Leak Verified YES Stars Forks Issues
Compatibility Delphi Supported Versions


IPGeolocation


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.

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.

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

..\Base64Lib\Source

⚡️ Uso da biblioteca

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

..\Base64Lib\Samples
Uses
  Base64Lib;

Text >> Base64

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

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;

Base64 >> Text

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

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

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

..\Base64Lib\Samples\Base64LibApp\
Base64Lib.mp4

Exemplo FMX

..\Base64Lib\Samples\Bitmap\FMX\
Base64Bitmap.mp4

Servidor REST(VCL)

..\Base64Lib\Samples\Bitmap\VCL\
Base64BitmapServerREST.mp4

⚠️ Licença

Base64Lib is free and open-source software licensed under the License

⬆️ Ir para o Topo