Exemplo n.º 1
0
int main(int argc, const char **argv) {
	int res = CGRESULT_UNSPECIFIED;
	int w = 850;
	int h = 850;
	int size = w*h;
	int w1, h1;
	double *r1 = new double[size];
	double *g1 = new double[size];
	double *b1 = new double[size];
	int w2, h2;
	double *r2 = new double[size];
	double *g2 = new double[size];
	double *b2 = new double[size];
	int w3, h3;
	double *r3 = new double[size];
	double *g3 = new double[size];
	double *b3 = new double[size];
	
	graphics_readImageRGB(argv[1], "bmp", &w, &h, &w1, &h1, r1, g1, b1, 0, &res);
	if (res != CGRESULT_OK)
		goto finish;
	
	graphics_readImageRGB(argv[2], "bmp", &w, &h, &w2, &h2, r2, g2, b2, 0, &res);
	if (res != CGRESULT_OK)
		goto finish;
	
	if (w1 != w2 || h1 != h2) {
		res = CGRESULT_UNSPECIFIED + CGRESULT_BAD_DIMENSION;
		goto finish;
	}
	
	res = imageDiff(size, r1, g1, b1, r2, g2, b2, r3, g3, b3);
	if (res != CGRESULT_OK)
		goto finish;
	
	graphics_writeImageRGB(argv[3], "bmp", &w1, &h1, r3, g3, b3, 0, &res);
	
finish:	
	delete[] r1;
	delete[] g1;
	delete[] b1;
	delete[] r2;
	delete[] g2;
	delete[] b2;
	delete[] r3;
	delete[] g3;
	delete[] b3;
	
	std::cout << "result=" << res << std::endl;
	return res;
}
Exemplo n.º 2
0
int main(int argc, char **argv)
{
    gdImagePtr A, B, C;
    unsigned char black, white;
    unsigned int minSX, minSY, maxSX, maxSY;
    bool rc;
#ifdef HAVE_GD_PNG
    FILE *f;
#endif

    if (argc < 3) {
        fprintf(stderr, "Usage: diffimg image1 image2 [outimage]\n");
        exit(EX_USAGE);
    }
    A = imageLoad(argv[1]);
    B = imageLoad(argv[2]);

    minSX = (gdImageSX(A) < gdImageSX(B)) ? gdImageSX(A) : gdImageSX(B);
    minSY = (gdImageSY(A) < gdImageSY(B)) ? gdImageSY(A) : gdImageSY(B);
    maxSX = (gdImageSX(A) > gdImageSX(B)) ? gdImageSX(A) : gdImageSX(B);
    maxSY = (gdImageSY(A) > gdImageSY(B)) ? gdImageSY(A) : gdImageSY(B);
    
    C = gdImageCreatePalette (maxSX, maxSY);

    white = gdImageColorAllocate(C, gdRedMax, gdGreenMax, gdBlueMax);
    black = gdImageColorAllocate(C, 0, 0, 0);

    if (maxSX > minSX && maxSY > minSY)
	gdImageFilledRectangle(C, minSX, minSY, maxSX-1, maxSY-1, black);

    rc = imageDiff (A, B, C, minSX, minSY, black, white);

#ifdef HAVE_GD_PNG
    if ((argc > 3) && ((f = fopen(argv[3], "wb")))) {
	gdImagePng (C, f);
	fclose(f);
    }
    else
        gdImagePng (C, stdout);
#else

    fprintf(stderr, "PNG output support is not available\n");
#endif

    gdImageDestroy(A);
    gdImageDestroy(B);
    gdImageDestroy(C);

    return (rc ? EXIT_FAILURE : EXIT_SUCCESS);
}