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 : Sélectionner tout - Visualiser dans une fenêtre à part
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