Blame examples/resize.c

Packit ed3af9
#include "gd.h"
Packit ed3af9
#include <stdio.h>
Packit ed3af9
#include <stdlib.h>
Packit ed3af9
Packit ed3af9
int main (int argc, char *argv[]) {
Packit ed3af9
	FILE *fp;
Packit ed3af9
	gdImagePtr in, out;
Packit ed3af9
	int w, h;
Packit ed3af9
Packit ed3af9
	/* Help */
Packit ed3af9
	if (argc<=4) {
Packit ed3af9
		printf("%s  input.jpg  output.jpg  width  height\n", argv[0]);
Packit ed3af9
		return 1;
Packit ed3af9
	}
Packit ed3af9
Packit ed3af9
	/* Size */
Packit ed3af9
	w = atoi(argv[3]);
Packit ed3af9
	h = atoi(argv[4]);
Packit ed3af9
	if (w<=0 || h<=0) {
Packit ed3af9
		fprintf(stderr, "Bad size %dx%d\n", h, w);
Packit ed3af9
		return 2;
Packit ed3af9
	}
Packit ed3af9
Packit ed3af9
	/* Input */
Packit ed3af9
	fp = fopen(argv[1], "rb");
Packit ed3af9
	if (!fp) {
Packit ed3af9
		fprintf(stderr, "Can't read image %s\n", argv[1]);
Packit ed3af9
		return 3;
Packit ed3af9
	}
Packit ed3af9
	in = gdImageCreateFromJpeg(fp);
Packit ed3af9
	fclose(fp);
Packit ed3af9
	if (!in) {
Packit ed3af9
		fprintf(stderr, "Can't create image from %s\n", argv[1]);
Packit ed3af9
		return 4;
Packit ed3af9
	}
Packit ed3af9
Packit ed3af9
	/* Resize */
Packit ed3af9
	gdImageSetInterpolationMethod(in, GD_BILINEAR_FIXED);
Packit ed3af9
	out = gdImageScale(in, w, h);
Packit ed3af9
	if (!out) {
Packit ed3af9
		fprintf(stderr, "gdImageScale fails\n");
Packit ed3af9
		return 5;
Packit ed3af9
	}
Packit ed3af9
Packit ed3af9
	/* Output */
Packit ed3af9
	fp = fopen(argv[2], "wb");
Packit ed3af9
	if (!fp) {
Packit ed3af9
		fprintf(stderr, "Can't save image %s\n", argv[2]);
Packit ed3af9
		return 6;
Packit ed3af9
	}
Packit ed3af9
	gdImageJpeg(out, fp, 90);
Packit ed3af9
	fclose(fp);
Packit ed3af9
Packit ed3af9
	/* Cleanups */
Packit ed3af9
	gdImageDestroy(in);
Packit ed3af9
	gdImageDestroy(out);
Packit ed3af9
Packit ed3af9
	return 0;
Packit ed3af9
}