resize-gd

diff resize-gd.c @ 10:6b8e8fcd6d4d

added error handling
author meillo@marmaro.de
date Sat, 14 Jun 2008 18:08:03 +0200
parents c0045d8d3ce2
children 6f5c3a02e4d5
line diff
     1.1 --- a/resize-gd.c	Sat Jun 14 18:07:51 2008 +0200
     1.2 +++ b/resize-gd.c	Sat Jun 14 18:08:03 2008 +0200
     1.3 @@ -14,7 +14,7 @@
     1.4  #include "gd.h"
     1.5  
     1.6  #define PROGRAM "resize-gd"
     1.7 -#define VERSION "0.1"
     1.8 +#define VERSION "0.2"
     1.9  
    1.10  enum {
    1.11  	Png,
    1.12 @@ -128,7 +128,7 @@
    1.13  
    1.14  	/* process images */
    1.15  	for (i = 2; i < argc; i++) {
    1.16 -		printf("processing file '%s'\n", argv[i]);
    1.17 +		/* printf("processing file '%s'\n", argv[i]); */
    1.18  
    1.19  		if (strcmp(argv[i]+strlen(argv[i])-4, ".png") == 0) {
    1.20  			type = Png;
    1.21 @@ -141,11 +141,19 @@
    1.22  
    1.23  		/* load image */
    1.24  		in = fopen(argv[i], "rb");
    1.25 +		if (in == NULL) {
    1.26 +			fprintf(stderr, "unable to open '%s' for reading\n", argv[i]);
    1.27 +			continue;
    1.28 +		}
    1.29  		if (type == Png) {
    1.30  			im_in = gdImageCreateFromPng(in);
    1.31  		} else if (type == Jpg) {
    1.32  			im_in = gdImageCreateFromJpeg(in);
    1.33  		}
    1.34 +		if (im_in == NULL) {
    1.35 +			fprintf(stderr, "unable to load image '%s'\n", argv[i]);
    1.36 +			continue;
    1.37 +		}
    1.38  		fclose(in);
    1.39  
    1.40  		/* calculate target size */
    1.41 @@ -161,10 +169,18 @@
    1.42  
    1.43  		/* copy-resize the image */
    1.44  		im_out = gdImageCreateTrueColor(sizedest.w, sizedest.h);
    1.45 +		if (im_out == NULL) {
    1.46 +			fprintf(stderr, "unable to allocate memory for resized image\n");
    1.47 +			exit(3);
    1.48 +		}
    1.49  		gdImageCopyResampled(im_out, im_in, 0, 0, 0, 0, im_out->sx, im_out->sy, im_in->sx, im_in->sy);
    1.50  
    1.51  		/* write image */
    1.52  		out = fopen(argv[i], "wb");
    1.53 +		if (out == NULL) {
    1.54 +			fprintf(stderr, "unable to open '%s' for writing\n", argv[i]);
    1.55 +			continue;
    1.56 +		}
    1.57  		if (type == Png) {
    1.58  			gdImagePng(im_out, out);
    1.59  		} else if (type == Jpg) {