/** * Test that gdImageGrayScale() produces pure gray-scale images * * We are reading a PNG image with transparency, apply gdImageGrayScale() and * test that each pixel has equal red, blue and green components. To avoid * flooding the test log, we bail out after the first non gray-scale pixel. * * We also make sure that the image is a truecolor image, since otherwise it is * not guaranteed that all pixels are actually gray-scale. * * See also . */ #include "gd.h" #include "gdtest.h" int main() { gdImagePtr im; FILE *fp; int res; int i, j; fp = gdTestFileOpen2("gdimagegrayscale", "bug00386.png"); gdTestAssert(fp != NULL); im = gdImageCreateFromPng(fp); gdTestAssert(im != NULL); fclose(fp); res = gdImageTrueColor(im); gdTestAssert(res != 0); res = gdImageGrayScale(im); gdTestAssert(res != 0); for (i = 0; i < gdImageSX(im); i++) { for (j = 0; j < gdImageSY(im); j++) { int color = gdImageGetTrueColorPixel(im, i, j); int red = gdImageRed(im, color); int green = gdImageGreen(im, color); int blue = gdImageBlue(im, color); if (!gdTestAssert(red == green && green == blue)) { return gdNumFailures(); } } } return gdNumFailures(); }