rtoss - Blame information for rev 186

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>
186 roytam 6 #define VER "1.0.4.2"
184 roytam 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){
186 roytam 27                 fprintf(stdout,"usage: repng2jpeg inputfile outputfile (width height|Z ratio) [Quality|P|G|B]\n\ninput  JPEG,PNG,GIF,BMP\noutput JPEG,PNG,GIF,BMP\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  B or b   Output a BMP 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);
184 roytam 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);
185 roytam 48         }else if (num[0] == 0x42 && num[1] == 0x4d){
49                 src = gdImageCreateFromBmp(imgin);
184 roytam 50         }else if (num[0] == 0x47 && num[1] == 0x49 && num[2] == 0x46){
51                 src = gdImageCreateFromGif(imgin);
52         }else{
186 roytam 53                 fprintf(stderr,"Input is not in JPEG PNG GIF or BMP format!\n");
184 roytam 54                 return 3;
55         }
56  
57         fclose(imgin);
58  
59         if(!src){
60                 fprintf(stderr,"Not Read Image!\n");
61                 return 4;
62         }
63  
64         srcW = src->sx;
65         srcH = src->sy;
66  
67         if(strcmp(argv[3],"Z") == 0||strcmp(argv[3],"z") == 0){
68                 ratio = atof(argv[4]);
69                 dstW = srcW * ratio;
70                 dstH = srcH * ratio;
71  
72         }else{
73                 dstW = atoi(argv[3]);
74                 dstH = atoi(argv[4]);
75         }
76  
77         jpegq = 0;
78         imgouttype = 0;
79  
80         if(argc > 5){
81                 if(strcmp(argv[5],"P") == 0||strcmp(argv[5],"p") == 0){ imgouttype = 2; }
82                 else if(strcmp(argv[5],"G") == 0||strcmp(argv[5],"g") == 0){ imgouttype = 3; }
186 roytam 83                 else if(strcmp(argv[5],"B") == 0||strcmp(argv[5],"B") == 0){ imgouttype = 4; }
184 roytam 84                 else{ jpegq = atoi(argv[5]); imgouttype = 1; }
85         }else{
86                 imgouttype = 1;
87         }
88  
89 /*
90         if(dstW < 1||dstH < 1||dstW > 5000 ||dstH > 5000){
91                 fprintf(stderr,"Max Width or Height -> 5000px\n");
92                 gdImageDestroy(src);
93                 return 5;
94         }
95 */
96         if(jpegq < 1||jpegq > 100){ jpegq = 75; }
97  
98 //      gd1 non Antialias
99 //      dst = gdImageCreate(dstW, dstH);
100 //      gdImageCopyResized(dst, src, 0, 0, 0, 0, dstW, dstH, srcW, srcH);
101  
102 //      gd2 Antialias
103         dst = gdImageCreateTrueColor(dstW, dstH);
104         gdImageCopyResampled(dst, src, 0, 0, 0, 0, dstW, dstH, srcW, srcH);
105  
106         gdImageDestroy(src);
107  
108         if(!(imgout = fopen(argv[2], "wb"))) {
109                 fprintf(stderr,"%s open error!\n", argv[2]);
110                 gdImageDestroy(dst);
111                 return 6;
112         }
113  
114         if(imgouttype == 1){
115                 gdImageJpeg(dst,imgout,jpegq);
116         }else if(imgouttype == 2){
117                 gdImagePng(dst,imgout);
118         }else if(imgouttype == 3){
119                 gdImageGif(dst,imgout);
186 roytam 120         }else if(imgouttype == 4){
121                 gdImageBmp(dst,imgout, 0);
184 roytam 122         }
123  
124         fclose(imgout);
125         gdImageDestroy(dst);
126  
127         return 0;
128 }