[GM-commit] GraphicsMagick: 2 new changesets
Swiss army knife of image processing
Brought to you by:
bfriesen
|
From: GraphicsMagick C. <gra...@li...> - 2025-01-29 16:27:32
|
changeset 9f09bb6ab080 in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=9f09bb6ab080 summary: coders/heif.c: Request the primary image handle from libheif. Do not throw an error if there is more than one image in the heif. changeset 482aaf1cc48c in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=482aaf1cc48c summary: magick/magic.c: Identify some more HEIF sub-formats. diffstat: ChangeLog | 11 +++++++++++ VisualMagick/installer/inc/version.isx | 4 ++-- coders/heif.c | 33 +++++++++++++++++---------------- fuzzing/README.txt | 7 +++++++ magick/magic.c | 17 ++++++++++++----- magick/version.h | 4 ++-- www/ChangeLog.html | 12 ++++++++++++ 7 files changed, 63 insertions(+), 25 deletions(-) diffs (171 lines): diff -r 2290d0e25d1d -r 482aaf1cc48c ChangeLog --- a/ChangeLog Sat Jan 25 08:43:21 2025 -0600 +++ b/ChangeLog Wed Jan 29 10:26:55 2025 -0600 @@ -1,3 +1,14 @@ +2025-01-29 Bob Friesenhahn <bfr...@si...> + + * magick/magic.c (StaticMagic): Identify some more HEIF + sub-formats. + + * coders/heif.c (ReadHEIFImage): Request the primary image handle + from libheif. Do not throw an error if there is more than one + image in the heif. Patch by Kevin Clauson and submitted via + SourceForge patch #84 "Patch: use primary image for heic even when + have multiple image". + 2025-01-25 Bob Friesenhahn <bfr...@si...> * coders/heif.c (ReadMetadata): Only apply Exif orientation if diff -r 2290d0e25d1d -r 482aaf1cc48c VisualMagick/installer/inc/version.isx --- a/VisualMagick/installer/inc/version.isx Sat Jan 25 08:43:21 2025 -0600 +++ b/VisualMagick/installer/inc/version.isx Wed Jan 29 10:26:55 2025 -0600 @@ -10,5 +10,5 @@ #define public MagickPackageName "GraphicsMagick" #define public MagickPackageVersion "1.4" -#define public MagickPackageVersionAddendum ".020250125" -#define public MagickPackageReleaseDate "snapshot-20250125" +#define public MagickPackageVersionAddendum ".020250129" +#define public MagickPackageReleaseDate "snapshot-20250129" diff -r 2290d0e25d1d -r 482aaf1cc48c coders/heif.c --- a/coders/heif.c Sat Jan 25 08:43:21 2025 -0600 +++ b/coders/heif.c Wed Jan 29 10:26:55 2025 -0600 @@ -591,29 +591,30 @@ ThrowHEIFReaderException(CorruptImageError, AnErrorHasOccurredReadingFromFile, image); } - /* FIXME: no support for reading multiple images but should be added */ + /* FIXME: no support for reading multiple images but should be + added, if multiple images will use primary image */ { int number_of_top_level_images; number_of_top_level_images=heif_context_get_number_of_top_level_images(heif); if (image->logging) (void) LogMagickEvent(CoderEvent,GetMagickModule(), - "heif_context_get_number_of_top_level_images() reports %d images", + "Number of top level images: %d (reading primary image only)", number_of_top_level_images); - if (number_of_top_level_images != 1) - ThrowHEIFReaderException(CoderError, NumberOfImagesIsNotSupported, image); - } + if (number_of_top_level_images == 0) + ThrowHEIFReaderException(CorruptImageError, AnErrorHasOccurredReadingFromFile, image); - heif_status=heif_context_get_primary_image_handle(heif, &heif_image_handle); - if (heif_status.code == heif_error_Memory_allocation_error) - ThrowHEIFReaderException(ResourceLimitError,MemoryAllocationFailed,image); - if (heif_status.code != heif_error_Ok) - { - if (image->logging) - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - "heif_context_get_primary_image_handle() reports error \"%s\"", - heif_status.message); - ThrowHEIFReaderException(CorruptImageError, AnErrorHasOccurredReadingFromFile, image); - } + heif_status=heif_context_get_primary_image_handle(heif, &heif_image_handle); + if (heif_status.code == heif_error_Memory_allocation_error) + ThrowHEIFReaderException(ResourceLimitError, MemoryAllocationFailed, image); + if (heif_status.code != heif_error_Ok) + { + if (image->logging) + (void) LogMagickEvent(CoderEvent,GetMagickModule(), + "heif_context_get_primary_image_handle() reports error \"%s\"", + heif_status.message); + ThrowHEIFReaderException(CorruptImageError, AnErrorHasOccurredReadingFromFile, image); + } + } /* Note: Those values are preliminary but likely the upper bound diff -r 2290d0e25d1d -r 482aaf1cc48c fuzzing/README.txt --- a/fuzzing/README.txt Sat Jan 25 08:43:21 2025 -0600 +++ b/fuzzing/README.txt Wed Jan 29 10:26:55 2025 -0600 @@ -143,6 +143,13 @@ make -j 8 make install +jpeg +++++ + +With sources under libjpeg-turbo:: + +cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=gcc -DCMAKE_C_FLAGS='-O -g' -DCMAKE_INSTALL_RPATH='/usr/local/lib' -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE -DBUILD_SHARED_LIBS=ON -DWITH_JPEG8=1 /home/bfriesen/src/libjpeg-turbo + libheif +++++++ diff -r 2290d0e25d1d -r 482aaf1cc48c magick/magic.c --- a/magick/magic.c Sat Jan 25 08:43:21 2025 -0600 +++ b/magick/magic.c Wed Jan 29 10:26:55 2025 -0600 @@ -1,5 +1,5 @@ /* -% Copyright (C) 2003-2022 GraphicsMagick Group +% Copyright (C) 2003-2025 GraphicsMagick Group % Copyright (C) 2002 ImageMagick Studio % % This program is covered by multiple licenses, which are described in @@ -60,7 +60,8 @@ { #define MAGIC(name,offset,magic) {name,(const unsigned char * const)magic,sizeof(magic)-1,offset} MAGIC("WEBP", 8, "WEBP"), - MAGIC("AVIF", 4, "ftypavif"), + MAGIC("AVIF", 4, "ftypavif"), /* HEIF: AV1 image */ + MAGIC("AVIF", 4, "ftypavis"), /* HEIF: AV1 image sequence */ /* MAGIC("AVI", 0, "RIFF"), */ MAGIC("8BIMWTEXT", 0, "8\000B\000I\000M\000#"), MAGIC("8BIMTEXT", 0, "8BIM#"), @@ -91,9 +92,15 @@ MAGIC("FITS", 0, "SIMPLE"), MAGIC("FPX", 0, "\320\317\021\340"), MAGIC("GIF", 0, "GIF8"), - MAGIC("HEIC", 4, "ftypheic"), - MAGIC("HEIC", 4, "ftypheix"), - MAGIC("HEIC", 4, "ftypmif1"), + MAGIC("HEIC", 4, "ftypheic"), /* HEIF: A regular heif image */ + MAGIC("HEIC", 4, "ftypheix"), /* HEIF: Extended range (>8 bit) image */ + MAGIC("HEIF", 4, "ftyphevc"), /* HEIF: Image sequence */ + MAGIC("HEIF", 4, "ftypheim"), /* HEIF: Image sequence */ + MAGIC("HEIF", 4, "ftypheis"), /* HEIF: Scalable image */ + MAGIC("HEIF", 4, "ftyphevm"), /* HEIF: Multiview sequence */ + MAGIC("HEIF", 4, "ftyphevs"), /* HEIF: Scalable sequence*/ + MAGIC("HEIC", 4, "ftypmif1"), /* HEIF: Nokia alpha_ image */ + MAGIC("HEIC", 4, "ftypmsf1"), /* HEIF: Nokia animation image */ MAGIC("HDF", 1, "HDF"), MAGIC("HPGL", 0, "IN;"), MAGIC("HTML", 1, "HTML"), diff -r 2290d0e25d1d -r 482aaf1cc48c magick/version.h --- a/magick/version.h Sat Jan 25 08:43:21 2025 -0600 +++ b/magick/version.h Wed Jan 29 10:26:55 2025 -0600 @@ -38,8 +38,8 @@ #define MagickLibVersion 0x282502 #define MagickLibVersionText "1.4" #define MagickLibVersionNumber 28,25,2 -#define MagickChangeDate "20250125" -#define MagickReleaseDate "snapshot-20250125" +#define MagickChangeDate "20250129" +#define MagickReleaseDate "snapshot-20250129" /* The MagickLibInterfaceNewest and MagickLibInterfaceOldest defines diff -r 2290d0e25d1d -r 482aaf1cc48c www/ChangeLog.html --- a/www/ChangeLog.html Sat Jan 25 08:43:21 2025 -0600 +++ b/www/ChangeLog.html Wed Jan 29 10:26:55 2025 -0600 @@ -38,6 +38,18 @@ <main id="graphicsmagick-changelog"> <h1 class="title">GraphicsMagick ChangeLog</h1> +<p>2025-01-29 Bob Friesenhahn <<a class="reference external" href="mailto:bfriesen%40simple.dallas.tx.us">bfriesen<span>@</span>simple<span>.</span>dallas<span>.</span>tx<span>.</span>us</a>></p> +<blockquote> +<ul class="simple"> +<li><p>magick/magic.c (StaticMagic): Identify some more HEIF +sub-formats.</p></li> +<li><p>coders/heif.c (ReadHEIFImage): Request the primary image handle +from libheif. Do not throw an error if there is more than one +image in the heif. Patch by Kevin Clauson and submitted via +SourceForge patch #84 "Patch: use primary image for heic even when +have multiple image".</p></li> +</ul> +</blockquote> <p>2025-01-25 Bob Friesenhahn <<a class="reference external" href="mailto:bfriesen%40simple.dallas.tx.us">bfriesen<span>@</span>simple<span>.</span>dallas<span>.</span>tx<span>.</span>us</a>></p> <blockquote> <ul class="simple"> |