[prev in list] [next in list] [prev in thread] [next in thread] 

List:       graphicsmagick-commit
Subject:    [GM-commit] GraphicsMagick: ReadTIFFImage(): Restore reading the alpha chann...
From:       GraphicsMagick Commits <graphicsmagick-commit () lists ! sourceforge ! net>
Date:       2023-08-16 22:52:10
Message-ID: mailman.9566.1692226343.1761.graphicsmagick-commit () lists ! sourceforge ! net
[Download RAW message or body]

changeset 15a0fc19fa0c in /hg/GraphicsMagick
details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=15a0fc19fa0c
                
summary: ReadTIFFImage(): Restore reading the alpha channel for TIFF files with \
unspecified alpha

diffstat:

 ChangeLog                              |   9 ++++++
 VisualMagick/installer/inc/version.isx |   4 +-
 coders/tiff.c                          |  45 +++++++++++++++++++++++++++++----
 magick/utility.c                       |   4 +++
 magick/version.h                       |   4 +-
 www/Changelog.html                     |  11 ++++++++
 6 files changed, 67 insertions(+), 10 deletions(-)

diffs (159 lines):

diff -r 9c19dbaa7b31 -r 15a0fc19fa0c ChangeLog
--- a/ChangeLog	Tue Aug 15 18:15:35 2023 -0500
+++ b/ChangeLog	Wed Aug 16 17:52:06 2023 -0500
@@ -1,3 +1,12 @@
+2023-08-16  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+	* coders/tiff.c (ReadTIFFImage): For common formats with the
+	required number of channels, but one is an 'unspecified' channel,
+	promote unspecified alpha to unassociated alpha so that the alpha
+	channel is not ignored. Addresses the remainder of SourceForge
+	issue #718 "Set reasonable defaults when writing TIFF with
+	transparency".
+
 2023-08-15  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
 
 	* Makefile.am (CHANGELOGS): Changelogs ChangeLog.2021 and
diff -r 9c19dbaa7b31 -r 15a0fc19fa0c VisualMagick/installer/inc/version.isx
--- a/VisualMagick/installer/inc/version.isx	Tue Aug 15 18:15:35 2023 -0500
+++ b/VisualMagick/installer/inc/version.isx	Wed Aug 16 17:52:06 2023 -0500
@@ -10,5 +10,5 @@
 
 #define public MagickPackageName "GraphicsMagick"
 #define public MagickPackageVersion "1.4"
-#define public MagickPackageVersionAddendum ".020230815"
-#define public MagickPackageReleaseDate "snapshot-20230815"
+#define public MagickPackageVersionAddendum ".020230816"
+#define public MagickPackageReleaseDate "snapshot-20230816"
diff -r 9c19dbaa7b31 -r 15a0fc19fa0c coders/tiff.c
--- a/coders/tiff.c	Tue Aug 15 18:15:35 2023 -0500
+++ b/coders/tiff.c	Wed Aug 16 17:52:06 2023 -0500
@@ -2239,6 +2239,7 @@
 
       /*
         Obtain information about any extra samples.
+        FIXME samples_per_pixel = 4 and 1 extra sample which is 'unspecified'
       */
       extra_samples=0;
       if (TIFFGetField(tiff,TIFFTAG_EXTRASAMPLES,&extra_samples,
@@ -2256,12 +2257,10 @@
               else if (sample_info[0] == EXTRASAMPLE_UNASSALPHA)
                 {
                   alpha_type=UnassociatedAlpha;
-                  image->matte=True;
                 }
               else if (sample_info[0] == EXTRASAMPLE_ASSOCALPHA)
                 {
                   alpha_type=AssociatedAlpha;
-                  image->matte=True;
                 }
             }
           if (image->logging)
@@ -2276,13 +2275,30 @@
         Report RGBA images which may be improperly marked.
       */
       if ((image->logging) && (extra_samples == 0))
-        if ((photometric == PHOTOMETRIC_RGB) && (samples_per_pixel == 4))
+        if (((PHOTOMETRIC_RGB == photometric) && (samples_per_pixel == 4)) ||
+            (((PHOTOMETRIC_MINISWHITE == photometric) || (PHOTOMETRIC_MINISBLACK == \
photometric)) && (samples_per_pixel == 2)))  {
             (void) LogMagickEvent(CoderEvent,GetMagickModule(),
-                                  "Photometric is RGB but %u samples/pixel and %u \
                extra_samples provided!",
-                                  samples_per_pixel, extra_samples);
+                                  "Photometric is %s but %u samples/pixel and %u \
extra_samples provided!", +                                  \
PhotometricTagToString(photometric),samples_per_pixel, extra_samples);  }
-
+      /*
+        Deal with files which are marked as unspecified alpha, but
+        they should be unassociated alpha.
+       */
+      if (((extra_samples == 1) && (sample_info[0] == EXTRASAMPLE_UNSPECIFIED)) &&
+          (
+           ((samples_per_pixel == 2) && ((PHOTOMETRIC_MINISWHITE == photometric) || \
(PHOTOMETRIC_MINISBLACK == photometric))) || +           ((samples_per_pixel == 4) && \
(PHOTOMETRIC_RGB == photometric)) || +           ((samples_per_pixel == 5) && \
(PHOTOMETRIC_SEPARATED == photometric)) +           )
+          )
+        {
+          (void) LogMagickEvent(CoderEvent,GetMagickModule(),
+                                "Promoting UnspecifiedAlpha to UnassociatedAlpha");
+          alpha_type=UnassociatedAlpha;
+          image->matte=True;
+        }
       /*
         Allow the user to over-ride the alpha channel type.
       */
@@ -2300,6 +2316,23 @@
         }
 
       /*
+        Does alpha type deserve a matte channel?
+      */
+      switch(alpha_type)
+        {
+        case UnspecifiedAlpha:
+          break;
+        case UnassociatedAlpha:
+          image->matte=True;
+          break;
+        case AssociatedAlpha:
+          image->matte=True;
+          break;
+        default:
+          break;
+        }
+
+      /*
         Describe how the alpha channel will be treated.
       */
       if (image->matte)
diff -r 9c19dbaa7b31 -r 15a0fc19fa0c magick/utility.c
--- a/magick/utility.c	Tue Aug 15 18:15:35 2023 -0500
+++ b/magick/utility.c	Wed Aug 16 17:52:06 2023 -0500
@@ -1951,6 +1951,10 @@
       *value=0.0;
       errno=ERANGE;
     }
+  /*
+    Warning: Visual Studio 2008 64-bit returns errno 34 "Result too
+    large", even though a correct value is returned!
+  */
   else if (errno == 0)
     {
       n++;
diff -r 9c19dbaa7b31 -r 15a0fc19fa0c magick/version.h
--- a/magick/version.h	Tue Aug 15 18:15:35 2023 -0500
+++ b/magick/version.h	Wed Aug 16 17:52:06 2023 -0500
@@ -38,8 +38,8 @@
 #define MagickLibVersion  0x272403
 #define MagickLibVersionText  "1.4"
 #define MagickLibVersionNumber 27,24,3
-#define MagickChangeDate   "20230815"
-#define MagickReleaseDate  "snapshot-20230815"
+#define MagickChangeDate   "20230816"
+#define MagickReleaseDate  "snapshot-20230816"
 
 /*
   The MagickLibInterfaceNewest and MagickLibInterfaceOldest defines
diff -r 9c19dbaa7b31 -r 15a0fc19fa0c www/Changelog.html
--- a/www/Changelog.html	Tue Aug 15 18:15:35 2023 -0500
+++ b/www/Changelog.html	Wed Aug 16 17:52:06 2023 -0500
@@ -37,6 +37,17 @@
 </div>
 
 <div class="document">
+<p>2023-08-16  Bob Friesenhahn  &lt;<a class="reference external" \
href="mailto:bfriesen&#37;&#52;&#48;simple&#46;dallas&#46;tx&#46;us">bfriesen<span>&#6 \
4;</span>simple<span>&#46;</span>dallas<span>&#46;</span>tx<span>&#46;</span>us</a>&gt;</p>
 +<blockquote>
+<ul class="simple">
+<li><p>coders/tiff.c (ReadTIFFImage): For common formats with the
+required number of channels, but one is an 'unspecified' channel,
+promote unspecified alpha to unassociated alpha so that the alpha
+channel is not ignored. Addresses the remainder of SourceForge
+issue #718 &quot;Set reasonable defaults when writing TIFF with
+transparency&quot;.</p></li>
+</ul>
+</blockquote>
 <p>2023-08-15  Bob Friesenhahn  &lt;<a class="reference external" \
href="mailto:bfriesen&#37;&#52;&#48;simple&#46;dallas&#46;tx&#46;us">bfriesen<span>&#6 \
4;</span>simple<span>&#46;</span>dallas<span>&#46;</span>tx<span>&#46;</span>us</a>&gt;</p>
  <blockquote>
 <ul class="simple">


_______________________________________________
Graphicsmagick-commit mailing list
Graphicsmagick-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/graphicsmagick-commit


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic