diff options
author | Pierre Joye <pierre.php@gmail.com> | 2021-08-14 04:09:39 +0700 |
---|---|---|
committer | Pierre Joye <pierre.php@gmail.com> | 2021-08-14 04:09:39 +0700 |
commit | cd17df9087ac92f39cdb4410e14f699f4622e122 (patch) | |
tree | 205c210091b671113695db8220ab241cf3572cae | |
parent | 08e11534f68914ea46c4769e90b36f810520eb07 (diff) | |
download | libgd-cd17df9087ac92f39cdb4410e14f699f4622e122.tar.gz |
add HEIC example
-rw-r--r-- | examples/CMakeLists.txt | 4 | ||||
-rw-r--r-- | examples/png2heif.c | 63 |
2 files changed, 67 insertions, 0 deletions
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 120a8f3..70282c7 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -20,6 +20,10 @@ if (TIFF_FOUND) LIST(APPEND TESTS_FILES tiffread) endif (TIFF_FOUND) +if (HEIF_FOUND) + LIST(APPEND TESTS_FILES png2heif) +endif (HEIF_FOUND) + if (BUILD_SHARED_LIBS) set(GD_LINK_LIB ${GD_LIB}) else() diff --git a/examples/png2heif.c b/examples/png2heif.c new file mode 100644 index 0000000..e7cc4a8 --- /dev/null +++ b/examples/png2heif.c @@ -0,0 +1,63 @@ +/** + * A short program which converts a .png file into a .avif file - + * just to get a little practice with the basic functionality. + * We convert losslessly. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif /* HAVE_CONFIG_H */ + +#include <stdio.h> +#include <stdlib.h> + +#include "gd.h" + +int main(int argc, char **argv) +{ + gdImagePtr im; + FILE *in, *out; + + if (argc != 3) { + fprintf(stderr, "Usage: png2avif infile.png outfile.avif\n"); + exit(1); + } + + printf("Reading infile %s\n", argv[1]); + + in = fopen(argv[1], "rb"); + if (!in) { + fprintf(stderr, "Error: input file %s does not exist.\n", argv[1]); + exit(1); + } + + im = gdImageCreateFromPng(in); + fclose(in); + if (!im) { + fprintf(stderr, "Error: input file %s is not in PNG format.\n", argv[1]); + exit(1); + } + gdImagePaletteToTrueColor(im); + if (!gdImagePaletteToTrueColor(im)) { + gdImageDestroy(im); + exit(1); + } + + out = fopen(argv[2], "wb"); + if (!out) { + fprintf(stderr, "Error: can't write to output file %s\n", argv[2]); + gdImageDestroy(im); + exit(1); + } + + fprintf(stderr, "Encoding...\n"); + + gdImageHeif(im, out); + + printf("Wrote outfile %s.\n", argv[2]); + + fclose(out); + gdImageDestroy(im); + + return 0; +} |