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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }