Re: Using ImagePluginPNG to (un)compress a memorybuffer
Posted: Tue Feb 16, 2010 8:16 pm
a bit shorter and crossplattform:
Greetings
Thomas
Code: Select all
; Autor: Thomas (ts-soft) Schulz
; PB-Version: 4.xx
; OS: windows/linux/MacOS
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Linux
ImportC #PB_Compiler_Home + "purelibraries/linux/libraries/zlib.a"
CompilerCase #PB_OS_MacOS
ImportC "/usr/lib/libz.dylib"
CompilerCase #PB_OS_Windows
ImportC "zlib.lib"
CompilerEndSelect
compress2(*dest, *destLen, *source, sourceLen, level)
uncompress(*dest, *destLen, *source, sourceLen)
EndImport
Procedure zipPackMemory(*source, sourceLen = #PB_Default, level = #PB_Default)
Protected *dest, destLen
If level < #PB_Default Or level > 9 : level = #PB_Default : EndIf
If *source
If sourceLen = #PB_Default : sourceLen = MemorySize(*source) : EndIf
destLen = sourceLen + 13 + (Int(sourceLen / 100))
*dest = AllocateMemory(destLen)
If *dest
If Not compress2(*dest, @destLen, *source, sourceLen, level)
*dest = ReAllocateMemory(*dest, destLen)
ProcedureReturn *dest
EndIf
EndIf
EndIf
EndProcedure
Procedure zipUnpackMemory(*source, *dest)
Protected sourceLen = MemorySize(*source)
Protected destLen = MemorySize(*dest)
If Not uncompress(*dest, @destLen, *source, sourceLen)
ProcedureReturn destLen
EndIf
EndProcedure
Thomas