Mercurial > resize-gd
annotate resize-gd.c @ 0:8c94239b3b3f
initial commit (provides basic funcionality)
author | meillo@localhost.localdomain |
---|---|
date | Fri, 13 Jun 2008 14:18:52 +0200 |
parents | |
children | 7a8f72b27dc3 |
rev | line source |
---|---|
0
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
1 /* compile with: gcc -lgd -lpng -lz -ljpeg -lm resize-gd.c */ |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
2 |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
3 #include <stdio.h> |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
4 #include <stdlib.h> /* for atoi() */ |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
5 #include <string.h> |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
6 #include "gd.h" /* Bring in the gd library functions */ |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
7 |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
8 |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
9 enum { |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
10 Png, |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
11 Jpg, |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
12 }; |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
13 |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
14 |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
15 int main(int argc, char* argv[]) { |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
16 int i; |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
17 int w, h; |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
18 int x, y; |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
19 int type; |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
20 gdImagePtr im_in; |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
21 gdImagePtr im_out; |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
22 FILE* in; |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
23 FILE* out; |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
24 |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
25 if (argc < 3) { |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
26 puts("usage: resize-gd <width>x<height> <imagefiles>"); |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
27 exit(1); |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
28 } |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
29 |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
30 /* parse width and height */ |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
31 w = atoi(argv[1]); |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
32 h = atoi(strstr(argv[1], "x") + 1); |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
33 printf("w: %d h: %d\n", w, h); |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
34 |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
35 /* process images */ |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
36 for (i = 2; i < argc; i++) { |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
37 printf("processing file '%s'\n", argv[i]); |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
38 |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
39 if (strcmp(&(argv[i][strlen(argv[i])-4]), ".png") == 0) { |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
40 type = Png; |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
41 } else if (strcmp(&(argv[i][strlen(argv[i])-4]), ".jpg") == 0) { |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
42 type = Jpg; |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
43 } else { |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
44 fprintf(stderr, "unknown filetype\n"); |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
45 exit(2); |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
46 } |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
47 |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
48 /* Load a large png to shrink in the smaller one */ |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
49 in = fopen(argv[i], "rb"); |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
50 if (type == Png) { |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
51 im_in = gdImageCreateFromPng(in); |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
52 } else if (type == Jpg) { |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
53 im_in = gdImageCreateFromJpeg(in); |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
54 } |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
55 fclose(in); |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
56 |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
57 im_out = gdImageCreateTrueColor(w, h); |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
58 |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
59 /* Now copy the large image */ |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
60 gdImageCopyResampled(im_out, im_in, 0, 0, 0, 0, im_out->sx, im_out->sy, im_in->sx, im_in->sy); |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
61 |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
62 /* write out */ |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
63 out = fopen(argv[i], "wb"); |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
64 if (type == Png) { |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
65 gdImagePng(im_out, out); |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
66 } else if (type == Jpg) { |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
67 gdImageJpeg(im_out, out, -1); |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
68 } |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
69 fclose(out); |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
70 |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
71 gdImageDestroy(im_in); |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
72 gdImageDestroy(im_out); |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
73 } |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
74 |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
75 return 0; |
8c94239b3b3f
initial commit (provides basic funcionality)
meillo@localhost.localdomain
parents:
diff
changeset
|
76 } |