Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

antoniojmsjr/Base64Lib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

84 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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