freeimage.h
FreeImage_ZLibCompress
DLL_API DWORD DLL_CALLCONV FreeImage_ZLibCompress(BYTE *target, DWORD target_size, BYTE *source, DWORD source_size);
Comprime un buffer de entrada source a uno de salida target, usando la librería ZLib. A la entrada, target_size es el tamaño total del buffer de destino, que debe ser al menos un 0.1% más grande que source_size más 12 bytes.
La función retorna el tamaño actual del buffer comprimido, o 0 se se ha producido un error.
BYTE *data = NULL; DWORD original_size = 0; // ... data = (BYTE*)malloc(original_size * sizeof(BYTE)); // ... // compress data DWORD compressed_size = (DWORD)((double) original_size + (0.1 * (double) original_size) + 12); BYTE *compressed_data = (BYTE*)malloc(compressed_size * sizeof(BYTE)); compressed_size = FreeImage_ZLibCompress(compressed_data, compressed_size, data, original_size); // write data to disk fwrite(&original_size, sizeof(DWORD), 1, stream); fwrite(&compressed_size, sizeof(DWORD), 1, stream); fwrite(compressed_data, sizeof(BYTE), compressed_size, stream); free(compressed_data);