int main (int argc, char *argv[]) { unsigned char *data; int len; JpegDecoder *dec; char *fn = "biglebowski.jpg"; unsigned char *ptr; int rowstride; int width; int height; dec = jpeg_decoder_new (); if (argc > 1) fn = argv[1]; data = getfile (fn, &len); jpeg_decoder_addbits (dec, data, len); jpeg_decoder_decode (dec); jpeg_decoder_get_component_ptr (dec, 1, &ptr, &rowstride); jpeg_decoder_get_component_size (dec, 1, &width, &height); dump_pgm (ptr, rowstride, width, height); return 0; }
int jpeg_rgb_decoder_get_image (JpegRGBDecoder * rgbdec, unsigned char **image, int *rowstride, int *width, int *height) { int i; jpeg_decoder_get_image_size (rgbdec->dec, &rgbdec->width, &rgbdec->height); for (i = 0; i < 3; i++) { jpeg_decoder_get_component_ptr (rgbdec->dec, i + 1, &rgbdec->component[i].image, &rgbdec->component[i].rowstride); jpeg_decoder_get_component_subsampling (rgbdec->dec, i + 1, &rgbdec->component[i].h_subsample, &rgbdec->component[i].v_subsample); rgbdec->component[i].alloc = 0; if (rgbdec->component[i].h_subsample > 1 || rgbdec->component[i].v_subsample > 1) { unsigned char *dest; dest = malloc (rgbdec->width * rgbdec->height); if (rgbdec->component[i].v_subsample > 1) { if (rgbdec->component[i].h_subsample > 1) { imagescale2h2v_u8 (dest, rgbdec->width, rgbdec->component[i].image, rgbdec->component[i].rowstride, rgbdec->width, rgbdec->height); } else { imagescale2v_u8 (dest, rgbdec->width, rgbdec->component[i].image, rgbdec->component[i].rowstride, rgbdec->width, rgbdec->height); } } else { imagescale2h_u8 (dest, rgbdec->width, rgbdec->component[i].image, rgbdec->component[i].rowstride, rgbdec->width, rgbdec->height); } rgbdec->component[i].alloc = 1; rgbdec->component[i].image = dest; rgbdec->component[i].rowstride = rgbdec->width; rgbdec->component[i].h_subsample = 1; rgbdec->component[i].v_subsample = 1; } } rgbdec->image = malloc (rgbdec->width * rgbdec->height * 4); convert (rgbdec); if (image) *image = rgbdec->image; if (rowstride) *rowstride = rgbdec->width * 4; if (width) *width = rgbdec->width; if (height) *height = rgbdec->height; return 0; }
int main (int argc, char *argv[]) { unsigned char *data; int len; JpegDecoder *dec; char *fn = "c:\\data\\liboil\\test.jpg"; unsigned char *ptr; int rowstride; int width; int height; /*if (argc < 2) { printf("jpeg_test <file.jpg>\n"); exit(1); }*/ if (argc > 1) fn = argv[1]; std_log(LOG_FILENAME_LINE, "Test Started examples_jpeg"); dec = jpeg_decoder_new (); //to create decoder instance data = getfile (fn, &len); jpeg_decoder_addbits (dec, data, len); jpeg_decoder_decode (dec); jpeg_decoder_get_component_ptr (dec, 1, &ptr, &rowstride); jpeg_decoder_get_component_size (dec, 1, &width, &height); dump_pgm (ptr, rowstride, width, height); std_log(LOG_FILENAME_LINE, "Test Successful"); create_xml(0); return 0; }