root / trunk / code / projects / colonet / server / vision / savetonetwork.c @ 939
History | View | Annotate | Download (1.1 KB)
1 |
#include <stdio.h> |
---|---|
2 |
#include "jpeglib.h" |
3 |
#include <cv.h> |
4 |
#include "memdst.h" |
5 |
|
6 |
int write_JPEG_to_mem (unsigned char *storage, int length, IplImage *_img, int quality) |
7 |
{ |
8 |
struct jpeg_compress_struct cinfo;
|
9 |
struct jpeg_error_mgr jerr;
|
10 |
JSAMPROW row_pointer[1];
|
11 |
|
12 |
int numBytes = -1; //size of jpeg after compression |
13 |
|
14 |
IplImage *img; |
15 |
|
16 |
img = cvCloneImage(_img); |
17 |
cvCvtColor(_img, img, CV_RGB2BGR); |
18 |
|
19 |
cinfo.err = jpeg_std_error(&jerr); |
20 |
|
21 |
jpeg_create_compress(&cinfo); |
22 |
|
23 |
jpeg_memory_dest(&cinfo,(JOCTET*)storage,length,&numBytes); |
24 |
|
25 |
cinfo.image_width = img->width; |
26 |
cinfo.image_height = img->height; |
27 |
cinfo.input_components = img->nChannels; |
28 |
cinfo.in_color_space = JCS_RGB; |
29 |
|
30 |
jpeg_set_defaults(&cinfo); |
31 |
jpeg_set_quality(&cinfo, quality, TRUE ); |
32 |
|
33 |
jpeg_start_compress(&cinfo, TRUE); |
34 |
|
35 |
while (cinfo.next_scanline < cinfo.image_height) {
|
36 |
row_pointer[0] = (unsigned char *)(img->imageData + cinfo.next_scanline * img->widthStep); |
37 |
(void) jpeg_write_scanlines(&cinfo, row_pointer, 1); |
38 |
} |
39 |
|
40 |
jpeg_finish_compress(&cinfo); |
41 |
jpeg_destroy_compress(&cinfo); |
42 |
|
43 |
cvReleaseImage(&img); |
44 |
|
45 |
return numBytes;
|
46 |
} |
47 |
|