Sign in Join

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

Catalog · How the catalog works

Random project

ZLibFramework

⚡ Biblioteca de compressão, descompressão e codificação 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

ZLibFramework

ZLibFramework

Biblioteca de compressão, descompressão e codificação em Base64.

Implementado na linguagem Delphi, utiliza o conceito de fluent interface para guiar no uso da biblioteca.</br> Biblioteca desenvolvida utilizando as classes nativas de compressão e descompressão(ZLib) e codificação Base64 do Delphi.

  • Base64: Classe de compressão e codificação para Base64 e decodificação e descompressão da Base64.
  • Data: Classe somente de compressão e descompressão de dados.

Algoritmo de compressão implementado:

  • Deflate
  • GZip

NOTA: As funções sempre retornam um MD5 antes da codificação e o MD5 depois da codificação, que podem ser usados para garantir que um determinado texto foi decodificado corretamente e validando com o MD5 gerado antes da codificação.

Para que?

Framework de compressão e descompressão com a opção de codificação em Base64.

  • Compressão de textos:
    • No aplicativo de demonstração, tem um exemplo de compressão de uma NF-e com 100 itens vendidos, no total de 94.543 caracteres:

      Resultado

      • Compressão e codificação em Base64: Uma redução de 91.167 caracteres ou 96,42% no seu tamanho.
      • Compressão: Uma redução de 92.012 caracteres ou 97,32% no seu tamanho.
    • Algoritmo de compressão: Deflate
  • Compressão de imagens
    • Bitmap
      • No aplicativo de demonstração, tem um exemplo de compressão de uma imagem no format bitmap, no total de 2.391.674 bytes:

        Resultado

        • Compressão e codificação em Base64: Uma redução de 645.774 bytes ou 27% no seu tamanho.
        • Compressão: Uma redução de 1.082.249 bytes ou 45,25% no seu tamanho.
      • Algoritmo de compressão: Deflate
    • PNG, JPG
      • Esses tipos de arquivo já sofreram um processo de compressão na sua criação, o resultado de uma nova compressão não é tão significativa.
    pascal
    * No aplicativo de demonstra????o, tem um exemplo de compress??o de imagem no format png, no total de 42.436 bytes:
        #### Resultado
        * Compress??o e codifica????o em Base64: Um **aumento** de 13.808 bytes ou **32,53%** no seu tamanho.
        * Compress??o: Uma **redu????o** de 255 bytes ou **0,60%** no seu tamanho.
    * Algoritmo de compress??o: Deflate

Instalação Automatizada

Utilizando o Boss (Dependency Manager for Delphi) é possível instalar a biblioteca de forma automática.

pascal
boss install github.com/antoniojmsjr/ZLibFramework

Instalação Manual:

Project > Options > Delphi Compiler > Target > All Configurations > Search path

pascal
..\ZLibFramework\Source

Uso:

delphi
uses ZLibFramework, ZLibFramework.Types;
delphi
var
  lResultCompress: IZLibResult;
  lMsgError: string;
begin
  try
    lResultCompress := TZLib
      .Base64
        .Compress
          .Deflate
            .Level(TZLibCompressionLevelType.Max)
            .Text('1234567890');

    Application.MessageBox(PWideChar(lResultCompress.TextUTF8), 'C O M P R E S S Ã O', MB_OK + MB_ICONINFORMATION);
  except
    on E: EZLibException do
    begin
      lMsgError := Concat(lMsgError, Format('Mode: %s', [E.Mode.AsString]), sLineBreak);
      lMsgError := Concat(lMsgError, Format('Operation: %s', [E.Operation.AsString]), sLineBreak);
      lMsgError := Concat(lMsgError, Format('Algorithm: %s', [E.Algorithm.AsString]), sLineBreak);
      lMsgError := Concat(lMsgError, Format('Encoding Fail: %s', [BoolToStr(E.EncodingFail, True)]), sLineBreak);
      lMsgError := Concat(lMsgError, Format('Message: %d', [E.Message]), sLineBreak);
      lMsgError := Concat(lMsgError, Format('Hint: %s', [E.Hint]));

      Application.MessageBox(PWideChar(lMsgError), 'A T E N Ç Ã O', MB_OK + MB_ICONERROR);
    end;
    on E: Exception do
    begin
      Application.MessageBox(PWideChar(E.Message), 'A T E N Ç Ã O', MB_OK + MB_ICONERROR);
    end;
  end;
end;

Demo

ZLibFramework

Licença

ZLibFramework is free and open-source software licensed under the