problème de compression dans un buffer avec libjpeg
Bonjour,
j'ai un petit problème avec l'utilisation de la libjpeg pour compresser une buffer rgb en "brute" dans un autre buffer.
j'utilise le code est le suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
GLOBAL(void)
write_JPEG_buffer (unsigned char *dest, unsigned char *src, int image_width, int image_height, int quality)
{
struct jpeg_compress_struct cinfo;
struct jpeg_error_mgr jerr;
JSAMPROW row_pointer[1];
int row_stride;
unsigned long size;
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_compress(&cinfo);
size = image_width * image_height * 3;
jpeg_mem_dest(&cinfo, &dest, &size);
cinfo.image_width = image_width;
cinfo.image_height = image_height;
cinfo.input_components = 3;
cinfo.in_color_space = JCS_RGB;
jpeg_set_defaults(&cinfo);
jpeg_set_quality(&cinfo, quality, TRUE );
jpeg_start_compress(&cinfo, TRUE);
row_stride = image_width * 3;
while (cinfo.next_scanline < cinfo.image_height)
{
row_pointer[0] = &src[cinfo.next_scanline * row_stride];
(void) jpeg_write_scanlines(&cinfo, row_pointer, 1);
}
jpeg_finish_compress(&cinfo);
jpeg_destroy_compress(&cinfo);
} |
le problème et que lorsque j'écris le résultat dans un buffer, la taille de l'image jpg résultat est identique à la taille du fichier non compressé.
Quelqu'un aurait une idée?
merci d'avance