
Сжатие, декомпрессия и библиотека кодирования в Base64.
Реализованный на языке Delphi, он использует концепцию интерфейса свободного, для руководства использованием библиотеки.
Библиотека разработана с использованием нативных классов сжатия и декомпрессии (Zlib) и Delphi Base64 кодирования.
Base64 : базовый сжатие и класс кодирования и базовый декодирование и декодирование и декомпрессия.
Data : класс сжатия данных и декомпрессия.
Реализованный алгоритм сжатия:
DeflateGZipПРИМЕЧАНИЕ. Функции всегда возвращают MD5 перед кодированием и MD5 после кодирования, который можно использовать для обеспечения того, чтобы определенный текст был декодирован правильно и проверял с помощью MD5, сгенерированного до кодирования.
Структура сжатия и декомпрессии с опцией кодирования BASE64.
Сжатие текста:
Сжатие изображения
Растровый карта
Png, JPG
Эти типы файлов уже перенесли процесс сжатия в своем создании, результат нового сжатия не так значитель.
В демонстрационном приложении есть пример сжатия формата PNG, на общую сумму 42 436 байтов:
Алгоритм сжатия: дефлятный
Используя босс (Manager для Delphi), можно автоматически установить библиотеку.
boss install github.com/antoniojmsjr/ZLibFramework
Проект> Параметры> Delphi Compiler> Target> Все конфигурации> Путь поиска
..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 -это бесплатное и программное обеспечение с открытым исходным кодом, лицензировано в соответствии с