rtoss - Blame information for rev 184

Subversion Repositories:
Rev:
Rev Author Line No. Line
184 roytam 1 // 15:00 2004/08/05
2 #include "gd.h"
3 #include <stdio.h>
4 #include <stdlib.h> /* for atoi(),atof() */
5 #include <string.h>
6 #define VER "1.0.4"
7  
8 int main(int argc, char *argv[]) {
9  
10         gdImagePtr dst,src;
11         FILE *imgin,*imgout;
12         int dstW,dstH,srcW,srcH,jpegq,imgouttype;
13         double ratio;
14         unsigned char num[4];
15  
16         if (argc >= 2 && (strcmp(argv[1],"--v") == 0 || strcmp(argv[1],"--ver") == 0 || strcmp(argv[1],"--version") == 0)){
17                 fprintf(stdout,"repng2jpeg version %s\n",VER);
18                 return 0;
19         }
20  
21         if (argc >= 2 && strcmp(argv[1],"--test") == 0){
22                 fprintf(stdout,"repng2jpeg TestMode:OK version %s\n",VER);
23                 return 0;
24         }
25  
26         if (argc >= 2 && strcmp(argv[1],"--help") == 0){
27                 fprintf(stdout,"usage: repng2jpeg inputfile outputfile (width height|Z ratio) [Quality|P|G]\n\ninput  JPEG,PNG,GIF\noutput JPEG,PNG,GIF\n\n[option]\n  Quality  Set the JPEG Quality (1-100 or Default.75)\n  P or p   Output a PNG image\n  G or g   Output a GIF image\n\nex.\nrepng2jpeg 1.jpg 2.jpg 400 300\nrepng2jpeg 1.jpg 2.jpg 400 300 90\nrepng2jpeg 1.jpg 2.png 400 300 P\nrepng2jpeg 1.jpg 2.gif Z 0.5 G\n\n",VER);
28                 return 0;
29         }
30  
31         if (argc <= 4){
32                 fprintf(stderr,"repng2jpeg: missing file argument\nTry `repng2jpeg --help' for more information.\n");
33                 return 1;
34         }
35  
36         if(!(imgin = fopen(argv[1],"rb"))) {
37                 fprintf(stderr,"%s open error!\n",argv[1]);
38                 return 2;
39         }
40  
41         fread(num,1,4,imgin);
42         fseek(imgin,0,0);
43  
44         if (num[0] == 0x89 && num[1] == 0x50 && num[2] == 0x4e && num[3] == 0x47){
45                 src = gdImageCreateFromPng(imgin);
46         }else if (num[0] == 0xff && num[1] == 0xd8){
47                 src = gdImageCreateFromJpeg(imgin);
48         }else if (num[0] == 0x47 && num[1] == 0x49 && num[2] == 0x46){
49                 src = gdImageCreateFromGif(imgin);
50         }else{
51                 fprintf(stderr,"Input is not in JPEG PNG or GIF format!\n");
52                 return 3;
53         }
54  
55         fclose(imgin);
56  
57         if(!src){
58                 fprintf(stderr,"Not Read Image!\n");
59                 return 4;
60         }
61  
62         srcW = src->sx;
63         srcH = src->sy;
64  
65         if(strcmp(argv[3],"Z") == 0||strcmp(argv[3],"z") == 0){
66                 ratio = atof(argv[4]);
67                 dstW = srcW * ratio;
68                 dstH = srcH * ratio;
69  
70         }else{
71                 dstW = atoi(argv[3]);
72                 dstH = atoi(argv[4]);
73         }
74  
75         jpegq = 0;
76         imgouttype = 0;
77  
78         if(argc > 5){
79                 if(strcmp(argv[5],"P") == 0||strcmp(argv[5],"p") == 0){ imgouttype = 2; }
80                 else if(strcmp(argv[5],"G") == 0||strcmp(argv[5],"g") == 0){ imgouttype = 3; }
81                 else{ jpegq = atoi(argv[5]); imgouttype = 1; }
82         }else{
83                 imgouttype = 1;
84         }
85  
86 /*
87         if(dstW < 1||dstH < 1||dstW > 5000 ||dstH > 5000){
88                 fprintf(stderr,"Max Width or Height -> 5000px\n");
89                 gdImageDestroy(src);
90                 return 5;
91         }
92 */
93         if(jpegq < 1||jpegq > 100){ jpegq = 75; }
94  
95 //      gd1 non Antialias
96 //      dst = gdImageCreate(dstW, dstH);
97 //      gdImageCopyResized(dst, src, 0, 0, 0, 0, dstW, dstH, srcW, srcH);
98  
99 //      gd2 Antialias
100         dst = gdImageCreateTrueColor(dstW, dstH);
101         gdImageCopyResampled(dst, src, 0, 0, 0, 0, dstW, dstH, srcW, srcH);
102  
103         gdImageDestroy(src);
104  
105         if(!(imgout = fopen(argv[2], "wb"))) {
106                 fprintf(stderr,"%s open error!\n", argv[2]);
107                 gdImageDestroy(dst);
108                 return 6;
109         }
110  
111         if(imgouttype == 1){
112                 gdImageJpeg(dst,imgout,jpegq);
113         }else if(imgouttype == 2){
114                 gdImagePng(dst,imgout);
115         }else if(imgouttype == 3){
116                 gdImageGif(dst,imgout);
117         }
118  
119         fclose(imgout);
120         gdImageDestroy(dst);
121  
122         return 0;
123 }