示例#1
0
int main()
{
#if defined(JPEG_LIB_VERSION_MAJOR) && JPEG_LIB_VERSION_MAJOR >= 8
	printf("skip, JPEG Major version too high (%i)\n", JPEG_LIB_VERSION_MAJOR);
	return 0;
#else
	gdImagePtr im;
	FILE *fp;
	char path[1024];

	snprintf(path, sizeof(path)-1, "%s/jpeg/conv_test.jpeg", GDTEST_TOP_DIR);
	fp = fopen(path, "rb");
	if (!fp) {
		gdTestErrorMsg("failed, cannot open file: %s\n", path);
		return 1;
	}

	im = gdImageCreateFromJpeg(fp);
	fclose(fp);

	if (im == NULL) {
		gdTestErrorMsg("gdImageCreateFromJpeg failed.\n");
		return 1;
	}
	snprintf(path, sizeof(path), "%s/jpeg/conv_test_exp.png", GDTEST_TOP_DIR);
	if (!gdAssertImageEqualsToFile(path, im)) {
		gdTestErrorMsg("gdAssertImageEqualsToFile failed: <%s>.\n", path);
		gdImageDestroy(im);
		return 1;
	}

	return 0;
#endif
}
示例#2
0
文件: gd2_im2im.c 项目: cmb69/libgd
int main()
{
	gdImagePtr src, dst;
	int r, g, b;
	void *p;
	int size = 0;
	int status = 0;
	CuTestImageResult result = {0, 0};

	src = gdImageCreate(100, 100);
	if (src == NULL) {
		gdTestErrorMsg("could not create src\n");
		return 1;
	}
	r = gdImageColorAllocate(src, 0xFF, 0, 0);
	g = gdImageColorAllocate(src, 0, 0xFF, 0);
	b = gdImageColorAllocate(src, 0, 0, 0xFF);
	gdImageFilledRectangle(src, 0, 0, 99, 99, r);
	gdImageRectangle(src, 20, 20, 79, 79, g);
	gdImageEllipse(src, 70, 25, 30, 20, b);

#define OUTPUT_GD2(x) do {												\
		FILE *fp = gdTestTempFp();										\
		gdImageGd2(x, fp, (GD2_CHUNKSIZE_MIN+GD2_CHUNKSIZE_MAX)/2, GD2_FMT_COMPRESSED); \
		fclose(fp);														\
	} while (0)

	OUTPUT_GD2(src);
	p = gdImageGd2Ptr(src, (GD2_CHUNKSIZE_MIN+GD2_CHUNKSIZE_MAX)/2, GD2_FMT_COMPRESSED, &size);
	if (p == NULL) {
		status = 1;
		gdTestErrorMsg("p is null\n");
		goto door0;
	}
	if (size <= 0) {
		status = 1;
		gdTestErrorMsg("size is non-positive\n");
		goto door1;
	}

	dst = gdImageCreateFromGd2Ptr(size, p);
	if (dst == NULL) {
		status = 1;
		gdTestErrorMsg("could not create dst\n");
		goto door1;
	}
	OUTPUT_GD2(dst);
	gdTestImageDiff(src, dst, NULL, &result);
	if (result.pixels_changed > 0) {
		status = 1;
		gdTestErrorMsg("pixels changed: %d\n", result.pixels_changed);
	}
	gdImageDestroy(dst);
door1:
	gdFree(p);
door0:
	gdImageDestroy(src);
	return status;
}
示例#3
0
int main()
{
	gdImagePtr im, exp;
	char path[2048];
	const char *file_im = "gdimagerotate/php_bug_64898.png";
	const char *file_exp = "gdimagerotate/php_bug_64898_exp.png";
	FILE *fp;
	int color;

	sprintf(path, "%s/%s", GDTEST_TOP_DIR, file_im);

	fp = fopen(path, "rb");

	if (!fp) {
		gdTestErrorMsg("opening PNG %s for reading failed.\n", path);
		return 1;
	}

	im = gdImageCreateTrueColor(141, 200);

	if (!im) {
		gdTestErrorMsg("loading %s failed.\n", path);
		return 1;
	}

	gdImageFilledRectangle(im, 0, 0, 140, 199, 0x00ffffff);

/*	Try default interpolation method, but any non-optimized fails */
/*	gdImageSetInterpolationMethod(im, GD_BICUBIC_FIXED); */

	exp = gdImageRotateInterpolated(im, 45, 0x0);

	if (!exp) {
		gdTestErrorMsg("rotating image failed.\n");
		gdImageDestroy(im);
		return 1;
	}

	sprintf(path, "%s/%s", GDTEST_TOP_DIR, file_exp);

	if (!gdAssertImageEqualsToFile(path, exp)) {
		printf("comparing rotated image to %s failed.\n", path);
		gdImageDestroy(im);
		gdImageDestroy(exp);
		return 1;
	}

	gdImageDestroy(exp);
	gdImageDestroy(im);

	return 0;
}
示例#4
0
int main()
{
	gdImagePtr im, im2;
	int error = 0;

	im = gdImageCreateTrueColor(100, 100);

	if (im == NULL) {
		gdTestErrorMsg("gdImageCreateTruecolor failed\n");
		error = 1;
		goto exit;
	}
	gdImageColorTransparent(im, -1);
	gdImageTrueColorToPalette(im, 1, 3);
	gdImageColorTransparent(im, 9);
	im2 = gdImageScale(im, 1, 65535);
	if (im2 == NULL) {
		error = 1;
		goto freeim;
	} else {
		gdImageDestroy(im2);
	}

freeim:
	gdImageDestroy(im);
exit:
	return error;
}
示例#5
0
int main()
{
 	gdImagePtr im;
	char * giffiles[4] = {"bug00005_0.gif", "bug00005_1.gif", "bug00005_2.gif", "bug00005_3.gif"};
	int valid[4]       = {0, 0, 0, 0};
	char *exp[4] = {NULL, NULL, "bug00005_2_exp.png", NULL};
	const int files_cnt = 4;
	FILE *fp;
	int i = 0;
	int error = 0;
	char path[1024];

	for (i=0; i < files_cnt; i++) {
		sprintf(path, "%s/gif/%s", GDTEST_TOP_DIR, giffiles[i]);

		fp = fopen(path, "rb");
		if (!fp) {
			gdTestErrorMsg("<%s> Input file does not exist!\n", path);
			return 1;
		}

		im = gdImageCreateFromGif(fp);
		fclose(fp);

		if (valid[i]) {
			if (!im) {
				error = 1;
			} else {
				sprintf(path, "%s/gif/%s", GDTEST_TOP_DIR, exp[i]);
				if (!gdAssertImageEqualsToFile(path, im)) {
					error = 1;
				}
				gdImageDestroy(im);
			}
		} else {
			if (!gdTestAssert(im == NULL)) {
				error = 1;
			}
		}
	}

	return error;
}
示例#6
0
int main() {
	gdImagePtr im;
	int black, white;
	int error = 0;
	int xs = 300, xe = 350, i;
	im = gdImageCreateTrueColor(400, 200);

	if (im == NULL) {
		gdTestErrorMsg("gdImageCreate failed.\n");
		return 1;
	}

	white = gdImageColorAllocate(im, 255,255,255);
	black = gdImageColorAllocate(im, 0,0,0);

	gdImageFilledRectangle(im, 0, 0, 400,200, white);

	gdImageRectangle(im, xs, 95, xe, 95, black);

	for (i = xs; i <= xe; i++) {
		int c = gdImageGetPixel(im, i, 94);
		if (c != white) {
			error |=1;
		}
	}
	for (i = xs; i <= xe; i++) {
		int c = gdImageGetPixel(im, i, 95);
		if (c != black) {
			error |=1;
		}
	}
	for (i = xs; i <= xe; i++) {
		int c = gdImageGetPixel(im, i, 96);
		if (c != white) {
			error |=1;
		}
	}
	gdImageDestroy(im);

	return error;
}
示例#7
0
文件: jpeg_read.c 项目: cmb69/libgd
int main()
{
#if defined(JPEG_LIB_VERSION_MAJOR) && JPEG_LIB_VERSION_MAJOR >= 8
	printf("skip, JPEG Major version too high (%i)\n", JPEG_LIB_VERSION_MAJOR);
	return 0;
#else
	gdImagePtr im;
	int error = 0;
	FILE *fp = gdTestFileOpen("jpeg/conv_test.jpeg");
	im = gdImageCreateFromJpeg(fp);
	fclose(fp);

	if (im == NULL) {
		gdTestErrorMsg("gdImageCreateFromJpeg failed.\n");
		return 1;
	}
	if (!gdAssertImageEqualsToFile("jpeg/conv_test_exp.png", im))
		error = 1;

	gdImageDestroy(im);
	return error;
#endif
}
示例#8
0
int main()
{
	gdImagePtr im;
	void *data;
	int size, red;

	im = gdImageCreate(100, 100);
	gdImageSetResolution(im, 72, 300);
	red = gdImageColorAllocate(im, 0xFF, 0x00, 0x00);
	gdImageFilledRectangle(im, 0, 0, 99, 99, red);
	data = gdImageJpegPtr(im, &size, 10);
	gdImageDestroy(im);

	im = gdImageCreateFromJpegPtr(size, data);
	gdFree(data);
	if (!gdTestAssert(gdImageResolutionX(im) == 72) || !gdTestAssert(gdImageResolutionY(im) == 300)) {
		gdTestErrorMsg("failed image resolution X (%d != 72) or Y (%d != 300)\n", gdImageResolutionX(im), gdImageResolutionY(im));
		gdImageDestroy(im);
		return 1;
	}
	gdImageDestroy(im);
	return 0;
}