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