Chilkat HOME ASP Visual Basic VB.NET C# Visual C++ C MFC Delphi FoxPro Java Perl PHP Python Ruby SQL Server VBScript
|
PPMD Streaming String CompressionDemonstrates streaming string compression using PPMD. Data may be compressed in chunks by initially calling one of the BeginCompress* methods, followed by 0 or more calls to a MoreCompress* method, and terminating with a call to an EndCompress* method. Likewise, data may be decompressed by calling a BeginDecompress* method, followed by 0 or more MoreDecompress* calls, and ending with an EndDecompress* method call. This example demonstrates string-to-string compression and decompression in chunks. The functionality in this example is available in pre-release only:
use chilkat; $compress = new chilkat::CkCompression(); # Any string argument automatically begins a 30-day trial. $success = $compress->UnlockComponent("30-day trial"); if ($success != 1) { print "Compression component unlock failed" . "\n"; exit; } $compress->put_Algorithm("ppmd"); $compress->put_Charset("ansi"); $compress->put_EncodingMode("base64"); # Create a long string to compress. $strData = "abcdefg1122334455667788"; $strData = $strData . "\r\n"; # Note: BeginCompressStringENC may return a zero-length # string. This is normal if the input is buffered and no # compressed data is yet available. # However, a null reference indicates an error -- which is # generally only possible if the component was never unlocked. $strCompressed = $compress->beginCompressStringENC($strData); if ($strCompressed eq null ) { print $compress->lastErrorText() . "\n"; exit; } # Compress 100 more chunks of data. Each call to # MoreCompressStringENC may or may not produce additional # compressed output. for ($i = 0; $i <= 99; $i++) { $strData = "abcdefg1122334455667788"; $strData = $strData . "\r\n"; $strCompressed = $strCompressed . $compress->moreCompressStringENC($strData); } # Finalize the compression with a single call to EndCompressStringENC: $strCompressed = $strCompressed . $compress->endCompressStringENC(); # Display the compressed string. # The result will be: # ec8YZ5vk9za18d0plwuV7R65em9OZge9gJXht/QAAAAAAAAAABNOZQAAKw== print $strCompressed . "\r\n"; # Decompress back to the original in a single call. $strOriginal = $compress->decompressStringENC($strCompressed); # Display the uncompressed original: print "--- Original ---" . "\r\n"; print $strOriginal . "\r\n"; # Decompress in multiple calls. It doesn't matter how the # compressed data is split -- it could be fed to the decompressor # one char at a time if desired. $chunk1 = "ec8YZ5vk9za1"; $chunk2 = "8d0p"; $chunk3 = "lwuV7R65em9OZge9gJXht/QAAAA"; $chunk4 = "AAAAAABNOZQAAKw=="; $strOriginal = ""; $strOriginal = $compress->beginDecompressStringENC($chunk1); $strOriginal = $strOriginal . $compress->moreDecompressStringENC($chunk2); $strOriginal = $strOriginal . $compress->moreDecompressStringENC($chunk3); $strOriginal = $strOriginal . $compress->moreDecompressStringENC($chunk4); $strOriginal = $strOriginal . $compress->endDecompressStringENC(); # Display the uncompressed original after decompressing in chunks: print "--- Original after Decompressing from Chunks ---" . "\r\n"; print $strOriginal . "\r\n"; |
Need a specific example? Send a request to support@chilkatsoft.com
© 2000-2007 Chilkat Software, Inc. All Rights Reserved.