12 if (cinfo->dest == NULL)
13 cinfo->dest = (
struct jpeg_destination_mgr*)
14 (*cinfo->mem->alloc_small)( (j_common_ptr) cinfo, JPOOL_PERMANENT,
26 struct jpeg_compress_struct cinfo;
27 struct jpeg_error_mgr jerr;
28 unsigned char *dataRGB = (
unsigned char*) src;
29 JSAMPROW row_pointer = (JSAMPROW) dataRGB;
36 memset( &cinfo, 0,
sizeof (cinfo) );
37 cinfo.err = jpeg_std_error( &jerr );
38 jpeg_create_compress( &cinfo );
41 cinfo.image_width =
width;
42 cinfo.image_height =
height;
43 cinfo.input_components = 3;
44 cinfo.in_color_space = JCS_RGB;
45 jpgbuff = (JOCTET*) dst;
49 jpeg_set_defaults( &cinfo );
50 jpeg_set_quality( &cinfo, quality,
TRUE );
51 jpeg_start_compress( &cinfo,
TRUE );
53 while (cinfo.next_scanline < cinfo.image_height) {
54 row_pointer = (JSAMPROW) ( dataRGB+(cinfo.next_scanline*3*width) );
55 jpeg_write_scanlines( &cinfo, &row_pointer, 1 );
57 jpeg_finish_compress( &cinfo );
62 jpeg_destroy_compress( &cinfo );
69 struct jpeg_compress_struct cinfo;
70 struct jpeg_error_mgr jerr;
72 if ( ( outfile =
fopen( file,
"wb" ) ) == NULL ) {
73 cerr<<
"can't open "<<file<<endl;
78 memset( &cinfo, 0,
sizeof (cinfo) );
79 cinfo.err = jpeg_std_error( &jerr );
80 jpeg_create_compress( &cinfo );
83 cinfo.image_width =
width;
84 cinfo.image_height =
height;
85 cinfo.input_components = 3;
86 cinfo.in_color_space = JCS_RGB;
89 jpeg_stdio_dest( &cinfo, outfile );
90 jpeg_set_defaults( &cinfo );
91 jpeg_set_quality( &cinfo, quality,
TRUE );
92 jpeg_start_compress( &cinfo,
TRUE );
94 while (cinfo.next_scanline < cinfo.image_height) {
95 row_pointer = (JSAMPROW) &src[cinfo.next_scanline*3*width];
96 jpeg_write_scanlines( &cinfo, &row_pointer, 1 );
98 jpeg_finish_compress( &cinfo );
101 jpeg_destroy_compress( &cinfo );
119 if ( (
size_t) num_bytes > cinfo->src->bytes_in_buffer ) {
120 cinfo->src->next_input_byte = NULL;
121 cinfo->src->bytes_in_buffer = 0;
123 cinfo->src->next_input_byte += (size_t) num_bytes;
124 cinfo->src->bytes_in_buffer -= (size_t) num_bytes;
141 struct jpeg_source_mgr *src;
142 src = cinfo->src = (
struct jpeg_source_mgr*)
143 (*cinfo->mem->alloc_small)( (j_common_ptr) cinfo,
149 src->resync_to_restart = jpeg_resync_to_restart;
151 src->next_input_byte = ptr;
152 src->bytes_in_buffer =
size;
157 struct jpeg_decompress_struct cinfo;
158 struct jpeg_error_mgr jerr;
160 unsigned char *dstcur;
162 cinfo.err = jpeg_std_error( &jerr );
163 jpeg_create_decompress( &cinfo );
165 jpeg_read_header( &cinfo,
TRUE );
166 jpeg_start_decompress( &cinfo );
168 *w = cinfo.output_width;
169 *h = cinfo.output_height;
170 line_size = cinfo.output_width*cinfo.output_components;
173 for (y = 0; y < cinfo.output_height; y++) {
174 jpeg_read_scanlines( &cinfo, (JSAMPARRAY) &dstcur, 1 );
177 jpeg_finish_decompress( &cinfo );
178 jpeg_destroy_decompress( &cinfo );
183 struct jpeg_decompress_struct cinfo;
184 struct jpeg_error_mgr jerr;
186 unsigned char *dstcur;
188 if ( ( infile =
fopen( file,
"rb" ) ) == NULL ) {
189 cerr<<
"can't open "<<file<<endl;
192 cinfo.err = jpeg_std_error( &jerr );
193 jpeg_create_decompress( &cinfo );
194 jpeg_stdio_src( &cinfo, infile );
195 jpeg_read_header( &cinfo,
TRUE );
196 jpeg_start_decompress( &cinfo );
198 *w = cinfo.output_width;
199 *h = cinfo.output_height;
200 line_size = cinfo.output_width*cinfo.output_components;
203 for (
size_t y = 0;
y < cinfo.output_height;
y++) {
204 jpeg_read_scanlines( &cinfo, (JSAMPARRAY) &dstcur, 1 );
207 jpeg_finish_decompress( &cinfo );
208 jpeg_destroy_decompress( &cinfo );