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);