Sample
int i, j, current = 0; fmt_info finfo; RGBA *image = NULL, *scan; fmt_codec_base *codeK; QString file = "/home/krasu/animation1.gif"; Determine the library and codec codeK = SQ_LibraryHandler::instance()->libraryForFile(file)->codec; Init: open file, etc. codeK->read_init(file.ascii()); while(true) { i = codeK->read_next(); Break, if we've decoded all available images in file if(i == SQE_NOTOK) break; Obtain the latest information (current image dimensions, etc.) finfo = codeK->information(); realloc memory for new image image = (RGBA *)realloc(image, finfo.image[current].w * finfo.image[current].h * sizeof(RGBA)); fill with white color (RGBA(255,255,255,255)) memset(image, 255, finfo.image[current].w * finfo.image[current].h * sizeof(RGBA)); for(int pass = 0;pass < finfo.image[current].passes;pass++) { codeK->read_next_pass(); for(j = 0;j < finfo.image[current].h;j++) { scan = image + j * finfo.image[current].w; codeK->read_scanline(scan); } } Do something with decoded image here. ... current++; } codeK->read_close(); free(image); |