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; }
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; }