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:
DeflateGZipNOTA: 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:
Compressão de imagens
Bitmap
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:
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
..ZLibFrameworkSource
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