GraphicsMagick: 2 new changesets

GraphicsMagick Commits <[email protected]> Sat, 25 Jan 2025 08:43:56 -0600
Newsgroups gmane.comp.video.graphicsmagick.cvs
Message-ID <mailman.50196.1737816246.7812.graphicsmagick-commit@lists.sourceforge.net>
changeset e5576f8d6a8f in /hg/GraphicsMagick
details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=e5576f8d6a8f
summary: coders/heif.c: Only apply Exif orientation if ignore-transformations is true

changeset 2290d0e25d1d in /hg/GraphicsMagick
details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=2290d0e25d1d
summary: Fix copyright years

diffstat:

 ChangeLog                              |   8 +++++++
 VisualMagick/installer/inc/version.isx |   4 +-
 coders/heif.c                          |  37 +++++++++++++++++++++++++++------
 coders/jpeg.c                          |   2 +-
 magick/version.h                       |   4 +-
 tests/rwfile.c                         |   2 +-
 wand/magick_wand.c                     |   2 +-
 www/ChangeLog.html                     |  10 +++++++++
 8 files changed, 55 insertions(+), 14 deletions(-)

diffs (169 lines):

diff -r b91cc8aa0f26 -r 2290d0e25d1d ChangeLog
--- a/ChangeLog	Fri Jan 24 09:53:11 2025 -0600
+++ b/ChangeLog	Sat Jan 25 08:43:21 2025 -0600
@@ -1,3 +1,11 @@
+2025-01-25  Bob Friesenhahn  <[email protected]>
+
+	* coders/heif.c (ReadMetadata): Only apply Exif orientation if
+	ignore-transformations is true since HEIF native transformations
+	will handle orientation otherwise.  Patch by Kevin Clauson via
+	GraphicsMagick SourceForge patch #83 "Patch: Fix HEIC Orientation
+	Issue".
+
 2025-01-24  Bob Friesenhahn  <[email protected]>
 
 	* wand/magick_wand.c (MagickSetImagePixels): If update image has
diff -r b91cc8aa0f26 -r 2290d0e25d1d VisualMagick/installer/inc/version.isx
--- a/VisualMagick/installer/inc/version.isx	Fri Jan 24 09:53:11 2025 -0600
+++ b/VisualMagick/installer/inc/version.isx	Sat Jan 25 08:43:21 2025 -0600
@@ -10,5 +10,5 @@
 
 #define public MagickPackageName "GraphicsMagick"
 #define public MagickPackageVersion "1.4"
-#define public MagickPackageVersionAddendum ".020250124"
-#define public MagickPackageReleaseDate "snapshot-20250124"
+#define public MagickPackageVersionAddendum ".020250125"
+#define public MagickPackageReleaseDate "snapshot-20250125"
diff -r b91cc8aa0f26 -r 2290d0e25d1d coders/heif.c
--- a/coders/heif.c	Fri Jan 24 09:53:11 2025 -0600
+++ b/coders/heif.c	Sat Jan 25 08:43:21 2025 -0600
@@ -1,5 +1,5 @@
 /*
-% Copyright (C) 2023-2024 GraphicsMagick Group
+% Copyright (C) 2023-2025 GraphicsMagick Group
 %
 % This program is covered by multiple licenses, which are described in
 % Copyright.txt. You should have received a copy of Copyright.txt with this
@@ -141,7 +141,8 @@
 /*
   Read metadata (Exif and XMP)
 */
-static Image *ReadMetadata(struct heif_image_handle *heif_image_handle,
+static Image *ReadMetadata(const ImageInfo *image_info,
+                           struct heif_image_handle *heif_image_handle,
                            Image *image, ExceptionInfo *exception)
 {
   int
@@ -241,9 +242,9 @@
 
               /* Big-endian offset decoding */
               offset = (magick_uint32_t) p[exif_pad+0] << 24 |
-                       (magick_uint32_t) p[exif_pad+1] << 16 |
-                       (magick_uint32_t) p[exif_pad+2] << 8 |
-                       (magick_uint32_t) p[exif_pad+3];
+                (magick_uint32_t) p[exif_pad+1] << 16 |
+                (magick_uint32_t) p[exif_pad+2] << 8 |
+                (magick_uint32_t) p[exif_pad+3];
 
               /*
                 If the TIFF header offset is not zero, then need to
@@ -257,7 +258,7 @@
                   /* Strip any EOI marker if payload starts with a JPEG marker */
                   if (profile_size > 2 &&
                       (memcmp(p+exif_pad+4,"\xff\xd8",2) == 0 ||
-                      memcmp(p+exif_pad+4,"\xff\xe1",2) == 0) &&
+                       memcmp(p+exif_pad+4,"\xff\xe1",2) == 0) &&
                       memcmp(p+exif_pad+4+profile_size-2,"\xff\xd9",2) == 0)
                     profile_size -= 2;
 
@@ -300,6 +301,28 @@
               if (NULL != content_type && strncmp(content_type,"application/rdf+xml",19) == 0)
                 SetImageProfile(image,"XMP",profile,profile_size);
             }
+          /*
+            Only apply Exif orientation if ignore-transformations is true
+            since HEIF native transformations will handle orientation otherwise
+          */
+          if (strncmp(profile_name,"Exif",4) == 0)
+            {
+              const char *value;
+              MagickBool ignore_transformations = MagickFalse;
+              if ((value=AccessDefinition(image_info,"heif","ignore-transformations")))
+                if (LocaleCompare(value,"TRUE") == 0)
+                  ignore_transformations = MagickTrue;
+
+              if (!ignore_transformations)
+                {
+                  const ImageAttribute *attribute = GetImageAttribute(image,"EXIF:Orientation");
+                  if (attribute && attribute->value)
+                    {
+                      SetImageAttribute(image,"EXIF:Orientation","1");
+                      image->orientation = UndefinedOrientation;
+                    }
+                }
+            }
           MagickFreeResourceLimitedMemory(profile);
         }
     }
@@ -610,7 +633,7 @@
     }
 
   /* Read EXIF and XMP profile */
-  if (!ReadMetadata(heif_image_handle, image, exception))
+  if (!ReadMetadata(image_info, heif_image_handle, image, exception))
     {
       HEIFReadCleanup();
       return NULL;
diff -r b91cc8aa0f26 -r 2290d0e25d1d coders/jpeg.c
--- a/coders/jpeg.c	Fri Jan 24 09:53:11 2025 -0600
+++ b/coders/jpeg.c	Sat Jan 25 08:43:21 2025 -0600
@@ -1,5 +1,5 @@
 /*
-% Copyright (C) 2003-2023 GraphicsMagick Group
+% Copyright (C) 2003-2025 GraphicsMagick Group
 % Copyright (C) 2002 ImageMagick Studio
 % Copyright 1991-1999 E. I. du Pont de Nemours and Company
 %
diff -r b91cc8aa0f26 -r 2290d0e25d1d magick/version.h
--- a/magick/version.h	Fri Jan 24 09:53:11 2025 -0600
+++ b/magick/version.h	Sat Jan 25 08:43:21 2025 -0600
@@ -38,8 +38,8 @@
 #define MagickLibVersion  0x282502
 #define MagickLibVersionText  "1.4"
 #define MagickLibVersionNumber 28,25,2
-#define MagickChangeDate   "20250124"
-#define MagickReleaseDate  "snapshot-20250124"
+#define MagickChangeDate   "20250125"
+#define MagickReleaseDate  "snapshot-20250125"
 
 /*
   The MagickLibInterfaceNewest and MagickLibInterfaceOldest defines
diff -r b91cc8aa0f26 -r 2290d0e25d1d tests/rwfile.c
--- a/tests/rwfile.c	Fri Jan 24 09:53:11 2025 -0600
+++ b/tests/rwfile.c	Sat Jan 25 08:43:21 2025 -0600
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2003-2024 GraphicsMagick Group
+ * Copyright (C) 2003-2025 GraphicsMagick Group
  * Copyright (C) 2003 ImageMagick Studio
  * Copyright 1991-1999 E. I. du Pont de Nemours and Company
  *
diff -r b91cc8aa0f26 -r 2290d0e25d1d wand/magick_wand.c
--- a/wand/magick_wand.c	Fri Jan 24 09:53:11 2025 -0600
+++ b/wand/magick_wand.c	Sat Jan 25 08:43:21 2025 -0600
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003-2024 GraphicsMagick Group */
+/* Copyright (C) 2003-2025 GraphicsMagick Group */
 /*
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %                                                                             %
diff -r b91cc8aa0f26 -r 2290d0e25d1d www/ChangeLog.html
--- a/www/ChangeLog.html	Fri Jan 24 09:53:11 2025 -0600
+++ b/www/ChangeLog.html	Sat Jan 25 08:43:21 2025 -0600
@@ -38,6 +38,16 @@
 
 <main id="graphicsmagick-changelog">
 <h1 class="title">GraphicsMagick ChangeLog</h1>
+<p>2025-01-25  Bob Friesenhahn  &lt;<a class="reference external" href="mailto:bfriesen&#37;&#52;&#48;simple&#46;dallas&#46;tx&#46;us">bfriesen<span>&#64;</span>simple<span>&#46;</span>dallas<span>&#46;</span>tx<span>&#46;</span>us</a>&gt;</p>
+<blockquote>
+<ul class="simple">
+<li><p>coders/heif.c (ReadMetadata): Only apply Exif orientation if
+ignore-transformations is true since HEIF native transformations
+will handle orientation otherwise.  Patch by Kevin Clauson via
+GraphicsMagick SourceForge patch #83 &quot;Patch: Fix HEIC Orientation
+Issue&quot;.</p></li>
+</ul>
+</blockquote>
 <p>2025-01-24  Bob Friesenhahn  &lt;<a class="reference external" href="mailto:bfriesen&#37;&#52;&#48;simple&#46;dallas&#46;tx&#46;us">bfriesen<span>&#64;</span>simple<span>&#46;</span>dallas<span>&#46;</span>tx<span>&#46;</span>us</a>&gt;</p>
 <blockquote>
 <ul class="simple">