Пример #1
0
int inputimggif(char *infname,unsigned char **RGB,int *ny,int *nx)
{
  PICINFO pinfo;
  int imagesize,i,dim,j,k;

  if (LoadGIF(infname,&pinfo,&imagesize)!=1)
  {
    printf("can not open %s\n",infname);
    exit (0);
  }
  *ny = pinfo.h;
  *nx = pinfo.w;
  imagesize = (*ny)*(*nx);

  for (i=0;i<256;i++)
  {
    if (pinfo.r[i]!=pinfo.g[i] || pinfo.g[i]!=pinfo.b[i] || pinfo.b[i]!=pinfo.r[i])
      break;
  }

  if (i<256) 
  {
    for (j=0;j<imagesize;j++) { if (pinfo.pic[j]>=i) break; }
    if (j<imagesize) dim = 3;
    else dim = 1;
  }
  else dim = 1;

  *RGB = (unsigned char *)calloc(imagesize*dim,sizeof(unsigned char));

  k=0;
  imagesize = (*ny)*(*nx);
  for (i=0; i<imagesize; i++)
  {
    j = pinfo.pic[i];
    (*RGB)[k] = (unsigned char) pinfo.r[j]; k++;
    if (dim==3)
    {
      (*RGB)[k] = (unsigned char) pinfo.g[j]; k++;
      (*RGB)[k] = (unsigned char) pinfo.b[j]; k++;
    }
  }
  free(pinfo.pic);
  if (pinfo.comment!=NULL) free(pinfo.comment);
  return dim;
}
Пример #2
0
int main(int argc, char** argv)
{
	if (argc != 5 && argc != 6 && argc != 7)
	{
		printf("Usage: program SourceJPEG DestJPEG DestWidth DestHeight [bpp] [rotation]\r\n");
		return -1;
	}
	RawImage_t* myImage;
  int bpp = 32;
  int rotation = 0;
  if (argc > 5)
    bpp = atoi(argv[5]);
  if (argc > 6)
    rotation = atoi(argv[6]);
	char* lastDot = strrchr(argv[1], '.');
	if (lastDot && !strcasecmp(lastDot, ".png"))
	{
		FILE* fp = fopen(argv[1], "rb");
		myImage = LoadPNG(fp, atoi(argv[3]), atoi(argv[4]));
		fclose(fp);
	}
	else if (lastDot && !strcasecmp(lastDot, ".gif"))
	{
		int fp = open(argv[1], O_RDONLY | O_BINARY);
		myImage = LoadGIF(fp, atoi(argv[3]), atoi(argv[4]));
		close(fp);
	}
	else if (lastDot && (!strcasecmp(lastDot, ".tif") || !strcasecmp(lastDot, ".tiff")))
	{
		int fp = open(argv[1], O_RDONLY | O_BINARY);
		myImage = LoadTIFF(fp, argv[1], atoi(argv[3]), atoi(argv[4]));
		close(fp);
	}
	else
	{
		FILE* fp = fopen(argv[1], "rb");
		myImage = LoadJPEG(fp, atoi(argv[3]), atoi(argv[4]), bpp, rotation);
		fclose(fp);
	}
	printf("Finished loading image\r\n");fflush(stdout);
	if (!myImage)
	{
		printf("FAILED loading image\r\n");
		return -1;
	}

	FILE* fp = fopen(argv[2], "wb");
	if (strstr(argv[2], ".png"))
	{
		if (SavePNG(myImage, fp))
			printf("FAILED saving PNG image\r\n");
	}
	else if (SaveJPEG(myImage, fp))
	{
		printf("FAILED saving JPEG image\r\n");
	}
	fclose(fp);

	free(myImage->pPlane);
	free(myImage);
	return 0;
}