Esempio n. 1
0
void create_mgif_delta()
  {
  void *d;
  long siz;

  //conv_2_rgb();
  init_palmap();
  if (BZTRATA) create_color_state();
  set_max_color_change(BZTRATA);
  create_low_quality();
  if (delta_data_size+frame_delta_size>FRAME_LEN)
     {
     create_mgif_lzw();
     return;
     }
  if (!frame_delta_size) return;
  reduce_palette();
  filter_colors(frame_delta,frame_delta_size,color_map);
  d=join_two_blocks(delta_data,frame_delta,delta_data_size,frame_delta_size,&siz);
  init_lzw_compressor(8);
  memset(lzw_buffer,0,sizeof(lzw_buffer));
  siz=lzw_encode(d,lzw_buffer,siz);
  done_lzw_compressor();
  free(d);
  if (siz>FRAME_LEN)
     {
     create_mgif_lzw();
     return;
     }
  write_chunk(MGIF_DELTA,siz,lzw_buffer);
  create_mgif_pal();
  }
Esempio n. 2
0
int main(int argc, char** argv) {

	struct image_t* image;
	struct image_t* new_image;
	struct palette_coeff_t* palette;
	unsigned int k;
	COLOR_TYPE* new_coeff;
	unsigned int new_coeff_size;
	unsigned int i;

	if(argc != 4) {
		print_command_line();
        return EXIT_FAILURE;
	}
	else {
		image = read_image(argv[1]);
		k = atoi(argv[2]);
	}

	fflush(stdout);
	palette = create_palette(image);

	printf("reduce palette : %d\n", reduce_palette(palette, 0, k));

	new_coeff = backtrace_palette_index(palette->model->size, 0, k, &new_coeff_size, palette);

	printf("New color : ");
	for(i = 0; i<new_coeff_size; i++) {
		printf("%d ", new_coeff[i]);
	}
	printf("\n");

	new_image = construct_image(new_coeff, new_coeff_size, image, palette->model);

	save_image(argv[3], new_image);


	free(new_image->pixels);
	free(new_image);


	free(new_coeff);

	free(image->pixels);
	free(image);

	free(palette->model->data);
	free(palette->model);
	free(palette->coeff);
	free(palette);

	return EXIT_SUCCESS;
}