]> granicus.if.org Git - imagemagick/commitdiff
https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=36932
authorCristy <urban-warrior@imagemagick.org>
Sun, 20 Oct 2019 18:56:47 +0000 (14:56 -0400)
committerCristy <urban-warrior@imagemagick.org>
Sun, 20 Oct 2019 18:56:47 +0000 (14:56 -0400)
MagickCore/enhance.c

index cafa67cb1e012e5a9cb9dd811605a748829e015a..a7d434f88e0167ad1d2eeedfe493bb1bdc3ed94b 100644 (file)
@@ -2754,7 +2754,8 @@ MagickExport MagickBooleanType HaldClutImage(Image *image,
     for (x=0; x < (ssize_t) image->columns; x++)
     {
       double
-        offset;
+        offset,
+        area;
 
       HaldInfo
         point;
@@ -2784,8 +2785,11 @@ MagickExport MagickBooleanType HaldClutImage(Image *image,
       if (status == MagickFalse)
         break;
       pixel3=zero;
+      area=point.y;
+      if (hald_image->interpolate == NearestInterpolatePixel)
+        area=(point.y < 0.5) ? 0 : 1;
       CompositePixelInfoAreaBlend(&pixel1,pixel1.alpha,&pixel2,pixel2.alpha,
-        point.y,&pixel3);
+        area,&pixel3);
       offset+=cube_size;
       status=InterpolatePixelInfo(hald_image,hald_view,hald_image->interpolate,
         fmod(offset,width),floor(offset/width),&pixel1,exception);
@@ -2797,10 +2801,13 @@ MagickExport MagickBooleanType HaldClutImage(Image *image,
         break;
       pixel4=zero;
       CompositePixelInfoAreaBlend(&pixel1,pixel1.alpha,&pixel2,pixel2.alpha,
-        point.y,&pixel4);
+        area,&pixel4);
       pixel=zero;
+      area=point.z;
+      if (hald_image->interpolate==NearestInterpolatePixel)
+        area=(point.z<0.5)?0:1;
       CompositePixelInfoAreaBlend(&pixel3,pixel3.alpha,&pixel4,pixel4.alpha,
-        point.z,&pixel);
+        area,&pixel);
       if ((GetPixelRedTraits(image) & UpdatePixelTrait) != 0)
         SetPixelRed(image,ClampToQuantum(pixel.red),q);
       if ((GetPixelGreenTraits(image) & UpdatePixelTrait) != 0)