libgd/tests/heif/bug788.c

43 lines
1.2 KiB
C

/**
* Bug 788 stride not implemented.
*/
#include "gd.h"
#include "gdtest.h"
#include <libheif/heif.h>
int main () {
FILE *fp;
gdImagePtr in;
gdImagePtr dst;
gdImagePtr diff;
int size;
void *data;
CuTestImageResult result = {0, 0};
fp = gdTestFileOpen2("heif", "bug788.png");
in = gdImageCreateFromPng(fp);
fclose(fp);
fp = fopen("1.png", "wb");
gdImagePng(in, fp);
fclose(fp);
data = gdImageHeifPtrEx(in, &size, 200, GD_HEIF_CODEC_HEVC, GD_HEIF_CHROMA_444);
dst = gdImageCreateFromHeifPtr(size, data);
diff = gdImageCreateTrueColor(gdImageSX(dst), gdImageSY(dst));
if (gdTestAssertMsg(dst != NULL, "cannot compare with NULL buffer")) {
gdTestImageDiff(in, dst, diff, &result);
}
fp = fopen("2.png", "wb");
gdImageHeif(dst, fp);
fclose(fp);
fp = fopen("3.png", "wb");
gdImagePng(diff, fp);
fclose(fp);
/* colorspace conversion cannot avoid colors differences, even if we use the same format/colorspace for in and out */
gdTestAssertMsg(result.pixels_changed > 30, "pixels changed: %d\n", result.pixels_changed);
gdImageDestroy(dst);
gdImageDestroy(in);
gdImageDestroy(diff);
return 0;
}