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.
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.
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:
- 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
- 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:
-
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:
- 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
- No aplicativo de demonstração, tem um exemplo de compressão de uma imagem no format bitmap, no total de 2.391.674 bytes:
-
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.
-
No aplicativo de demonstração, tem um exemplo de compressão de imagem no format png, no total de 42.436 bytes:
- 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
-
-
Utilizando o Boss (Dependency Manager for Delphi) é possível instalar a biblioteca de forma automática.
boss install github.com/antoniojmsjr/ZLibFramework
Project > Options > Delphi Compiler > Target > All Configurations > Search path
..\ZLibFramework\Source
uses ZLibFramework, ZLibFramework.Types;
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;
ZLibFramework
is free and open-source software licensed under the