]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Wed, 22 Sep 2010 14:23:02 +0000 (14:23 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Wed, 22 Sep 2010 14:23:02 +0000 (14:23 +0000)
magick/compress.c
magick/fx.c
magick/histogram.c
magick/resize.c
magick/transform.c

index 3722a50a993fd3810b59375566db250ca0c6afd1..c40605e298c580ed9f53893d740aa605d383bcbc 100644 (file)
@@ -416,6 +416,9 @@ MagickExport MagickBooleanType HuffmanDecodeImage(Image *image)
     runlength=0;  \
 }
 
+  CacheView
+    *image_view;
+
   const HuffmanTable
     *entry;
 
@@ -432,9 +435,6 @@ MagickExport MagickBooleanType HuffmanDecodeImage(Image *image)
   int
     byte;
 
-  ssize_t
-    y;
-
   MagickBooleanType
     proceed;
 
@@ -448,7 +448,8 @@ MagickExport MagickBooleanType HuffmanDecodeImage(Image *image)
     *p;
 
   ssize_t
-    count;
+    count,
+    y;
 
   unsigned char
     *scanline;
@@ -509,14 +510,15 @@ MagickExport MagickBooleanType HuffmanDecodeImage(Image *image)
   image->y_resolution=196.0;
   image->units=PixelsPerInchResolution;
   exception=(&image->exception);
+  image_view=AcquireCacheView(image);
   for (y=0; ((y < (ssize_t) image->rows) && (null_lines < 3)); )
   {
-    register ssize_t
-      x;
-
     register PixelPacket
       *restrict q;
 
+    register ssize_t
+      x;
+
     /*
       Initialize scanline to white.
     */
@@ -628,23 +630,24 @@ MagickExport MagickBooleanType HuffmanDecodeImage(Image *image)
       Transfer scanline to image pixels.
     */
     p=scanline;
-    q=QueueAuthenticPixels(image,0,y,image->columns,1,exception);
+    q=QueueCacheViewAuthenticPixels(image_view,0,y,image->columns,1,exception);
     if (q == (PixelPacket *) NULL)
       break;
-    indexes=GetAuthenticIndexQueue(image);
+    indexes=GetCacheViewAuthenticIndexQueue(image_view);
     for (x=0; x < (ssize_t) image->columns; x++)
     {
       index=(IndexPacket) (*p++);
       indexes[x]=index;
       *q++=image->colormap[(ssize_t) index];
     }
-    if (SyncAuthenticPixels(image,exception) == MagickFalse)
+    if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse)
       break;
     proceed=SetImageProgress(image,LoadImageTag,y,image->rows);
     if (proceed == MagickFalse)
       break;
     y++;
   }
+  image_view=DestroyCacheView(image_view);
   image->rows=(size_t) MagickMax((size_t) y-3,1);
   image->compression=FaxCompression;
   /*
index e7f58fb6c51a882b3da4a0e76bef44174f1a6990..756ffce1c77b8acffeec14cba872bebba18dc318 100644 (file)
@@ -3523,8 +3523,8 @@ static inline Quantum PlasmaPixel(RandomInfo *random_info,
 }
 
 MagickExport MagickBooleanType PlasmaImageProxy(Image *image,
-  RandomInfo *random_info,const SegmentInfo *segment,size_t attenuate,
-  size_t depth)
+  CacheView *image_view,RandomInfo *random_info,const SegmentInfo *segment,
+  size_t attenuate,size_t depth)
 {
   ExceptionInfo
     *exception;
@@ -3559,22 +3559,24 @@ MagickExport MagickBooleanType PlasmaImageProxy(Image *image,
       local_info=(*segment);
       local_info.x2=(double) x_mid;
       local_info.y2=(double) y_mid;
-      (void) PlasmaImageProxy(image,random_info,&local_info,attenuate,depth);
+      (void) PlasmaImageProxy(image,image_view,random_info,&local_info,
+        attenuate,depth);
       local_info=(*segment);
       local_info.y1=(double) y_mid;
       local_info.x2=(double) x_mid;
-      (void) PlasmaImageProxy(image,random_info,&local_info,attenuate,depth);
+      (void) PlasmaImageProxy(image,image_view,random_info,&local_info,
+        attenuate,depth);
       local_info=(*segment);
       local_info.x1=(double) x_mid;
       local_info.y2=(double) y_mid;
-      (void) PlasmaImageProxy(image,random_info,&local_info,attenuate,depth);
+      (void) PlasmaImageProxy(image,image_view,random_info,&local_info,
+        attenuate,depth);
       local_info=(*segment);
       local_info.x1=(double) x_mid;
       local_info.y1=(double) y_mid;
-      return(PlasmaImageProxy(image,random_info,&local_info,attenuate,depth));
+      return(PlasmaImageProxy(image,image_view,random_info,&local_info,
+        attenuate,depth));
     }
-  if (SetImageStorageClass(image,DirectClass) == MagickFalse)
-    return(MagickFalse);
   x_mid=(ssize_t) ceil((segment->x1+segment->x2)/2-0.5);
   y_mid=(ssize_t) ceil((segment->y1+segment->y2)/2-0.5);
   if ((segment->x1 == (double) x_mid) && (segment->x2 == (double) x_mid) &&
@@ -3594,11 +3596,11 @@ MagickExport MagickBooleanType PlasmaImageProxy(Image *image,
         Left pixel.
       */
       x=(ssize_t) ceil(segment->x1-0.5);
-      (void) GetOneVirtualPixel(image,x,(ssize_t) ceil(segment->y1-0.5),&u,
-        exception);
-      (void) GetOneVirtualPixel(image,x,(ssize_t) ceil(segment->y2-0.5),&v,
-        exception);
-      q=QueueAuthenticPixels(image,x,y_mid,1,1,exception);
+      (void) GetOneCacheViewVirtualPixel(image_view,x,(ssize_t)
+        ceil(segment->y1-0.5),&u,exception);
+      (void) GetOneCacheViewVirtualPixel(image_view,x,(ssize_t)
+        ceil(segment->y2-0.5),&v,exception);
+      q=QueueCacheViewAuthenticPixels(image_view,x,y_mid,1,1,exception);
       if (q == (PixelPacket *) NULL)
         return(MagickTrue);
       q->red=PlasmaPixel(random_info,(MagickRealType) (u.red+v.red)/2.0,
@@ -3607,18 +3609,18 @@ MagickExport MagickBooleanType PlasmaImageProxy(Image *image,
         plasma);
       q->blue=PlasmaPixel(random_info,(MagickRealType) (u.blue+v.blue)/2.0,
         plasma);
-      (void) SyncAuthenticPixels(image,exception);
+      (void) SyncCacheViewAuthenticPixels(image_view,exception);
       if (segment->x1 != segment->x2)
         {
           /*
             Right pixel.
           */
           x=(ssize_t) ceil(segment->x2-0.5);
-          (void) GetOneVirtualPixel(image,x,(ssize_t) ceil(segment->y1-0.5),&u,
-            exception);
-          (void) GetOneVirtualPixel(image,x,(ssize_t) ceil(segment->y2-0.5),&v,
-            exception);
-          q=QueueAuthenticPixels(image,x,y_mid,1,1,exception);
+          (void) GetOneCacheViewVirtualPixel(image_view,x,(ssize_t)
+            ceil(segment->y1-0.5),&u,exception);
+          (void) GetOneCacheViewVirtualPixel(image_view,x,(ssize_t)
+            ceil(segment->y2-0.5),&v,exception);
+          q=QueueCacheViewAuthenticPixels(image_view,x,y_mid,1,1,exception);
           if (q == (PixelPacket *) NULL)
             return(MagickTrue);
           q->red=PlasmaPixel(random_info,(MagickRealType) (u.red+v.red)/2.0,
@@ -3626,8 +3628,8 @@ MagickExport MagickBooleanType PlasmaImageProxy(Image *image,
           q->green=PlasmaPixel(random_info,(MagickRealType) (u.green+v.green)/
             2.0,plasma);
           q->blue=PlasmaPixel(random_info,(MagickRealType) (u.blue+v.blue)/2.0,
-             plasma);
-          (void) SyncAuthenticPixels(image,exception);
+            plasma);
+          (void) SyncCacheViewAuthenticPixels(image_view,exception);
         }
     }
   if ((segment->y1 != (double) y_mid) || (segment->y2 != (double) y_mid))
@@ -3641,11 +3643,11 @@ MagickExport MagickBooleanType PlasmaImageProxy(Image *image,
             Bottom pixel.
           */
           y=(ssize_t) ceil(segment->y2-0.5);
-          (void) GetOneVirtualPixel(image,(ssize_t) ceil(segment->x1-0.5),y,&u,
-            exception);
-          (void) GetOneVirtualPixel(image,(ssize_t) ceil(segment->x2-0.5),y,&v,
-            exception);
-          q=QueueAuthenticPixels(image,x_mid,y,1,1,exception);
+          (void) GetOneCacheViewVirtualPixel(image_view,(ssize_t)
+            ceil(segment->x1-0.5),y,&u,exception);
+          (void) GetOneCacheViewVirtualPixel(image_view,(ssize_t)
+            ceil(segment->x2-0.5),y,&v,exception);
+          q=QueueCacheViewAuthenticPixels(image_view,x_mid,y,1,1,exception);
           if (q == (PixelPacket *) NULL)
             return(MagickTrue);
           q->red=PlasmaPixel(random_info,(MagickRealType) (u.red+v.red)/2.0,
@@ -3654,7 +3656,7 @@ MagickExport MagickBooleanType PlasmaImageProxy(Image *image,
             2.0,plasma);
           q->blue=PlasmaPixel(random_info,(MagickRealType) (u.blue+v.blue)/2.0,
             plasma);
-          (void) SyncAuthenticPixels(image,exception);
+          (void) SyncCacheViewAuthenticPixels(image_view,exception);
         }
       if (segment->y1 != segment->y2)
         {
@@ -3665,11 +3667,11 @@ MagickExport MagickBooleanType PlasmaImageProxy(Image *image,
             Top pixel.
           */
           y=(ssize_t) ceil(segment->y1-0.5);
-          (void) GetOneVirtualPixel(image,(ssize_t) ceil(segment->x1-0.5),y,&u,
-            exception);
-          (void) GetOneVirtualPixel(image,(ssize_t) ceil(segment->x2-0.5),y,&v,
-            exception);
-          q=QueueAuthenticPixels(image,x_mid,y,1,1,exception);
+          (void) GetOneCacheViewVirtualPixel(image_view,(ssize_t)
+            ceil(segment->x1-0.5),y,&u,exception);
+          (void) GetOneCacheViewVirtualPixel(image_view,(ssize_t)
+            ceil(segment->x2-0.5),y,&v,exception);
+          q=QueueCacheViewAuthenticPixels(image_view,x_mid,y,1,1,exception);
           if (q == (PixelPacket *) NULL)
             return(MagickTrue);
           q->red=PlasmaPixel(random_info,(MagickRealType) (u.red+v.red)/2.0,
@@ -3678,7 +3680,7 @@ MagickExport MagickBooleanType PlasmaImageProxy(Image *image,
             2.0,plasma);
           q->blue=PlasmaPixel(random_info,(MagickRealType) (u.blue+v.blue)/2.0,
             plasma);
-          (void) SyncAuthenticPixels(image,exception);
+          (void) SyncCacheViewAuthenticPixels(image_view,exception);
         }
     }
   if ((segment->x1 != segment->x2) || (segment->y1 != segment->y2))
@@ -3694,8 +3696,8 @@ MagickExport MagickBooleanType PlasmaImageProxy(Image *image,
       (void) GetOneVirtualPixel(image,x,y,&u,exception);
       x=(ssize_t) ceil(segment->x2-0.5);
       y=(ssize_t) ceil(segment->y2-0.5);
-      (void) GetOneVirtualPixel(image,x,y,&v,exception);
-      q=QueueAuthenticPixels(image,x_mid,y_mid,1,1,exception);
+      (void) GetOneCacheViewVirtualPixel(image_view,x,y,&v,exception);
+      q=QueueCacheViewAuthenticPixels(image_view,x_mid,y_mid,1,1,exception);
       if (q == (PixelPacket *) NULL)
         return(MagickTrue);
       q->red=PlasmaPixel(random_info,(MagickRealType) (u.red+v.red)/2.0,
@@ -3704,7 +3706,7 @@ MagickExport MagickBooleanType PlasmaImageProxy(Image *image,
         plasma);
       q->blue=PlasmaPixel(random_info,(MagickRealType) (u.blue+v.blue)/2.0,
         plasma);
-      (void) SyncAuthenticPixels(image,exception);
+      (void) SyncCacheViewAuthenticPixels(image_view,exception);
     }
   if (((segment->x2-segment->x1) < 3.0) && ((segment->y2-segment->y1) < 3.0))
     return(MagickTrue);
@@ -3714,6 +3716,9 @@ MagickExport MagickBooleanType PlasmaImageProxy(Image *image,
 MagickExport MagickBooleanType PlasmaImage(Image *image,
   const SegmentInfo *segment,size_t attenuate,size_t depth)
 {
+  CacheView
+    *image_view;
+
   MagickBooleanType
     status;
 
@@ -3726,9 +3731,13 @@ MagickExport MagickBooleanType PlasmaImage(Image *image,
   assert(image->signature == MagickSignature);
   if (image->debug != MagickFalse)
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
+  if (SetImageStorageClass(image,DirectClass) == MagickFalse)
+    return(MagickFalse);
+  image_view=AcquireCacheView(image);
   random_info=AcquireRandomInfo();
-  status=PlasmaImageProxy(image,random_info,segment,attenuate,depth);
+  status=PlasmaImageProxy(image,image_view,random_info,segment,attenuate,depth);
   random_info=DestroyRandomInfo(random_info);
+  image_view=DestroyCacheView(image_view);
   return(status);
 }
 \f
index a586314522879bd26292c84bc038d6b5ef2ecce4..ca43fd0e0e097b55f91647ac4cbe9f4890cc8383 100644 (file)
@@ -1227,8 +1227,8 @@ MagickExport size_t GetNumberColors(const Image *image,FILE *file,
 %
 */
 
-static void UniqueColorsToImage(Image *image,CubeInfo *cube_info,
-  const NodeInfo *node_info,ExceptionInfo *exception)
+static void UniqueColorsToImage(Image *unique_image,CacheView *unique_view,
+  CubeInfo *cube_info,const NodeInfo *node_info,ExceptionInfo *exception)
 {
 #define UniqueColorsImageTag  "UniqueColors/Image"
 
@@ -1244,10 +1244,11 @@ static void UniqueColorsToImage(Image *image,CubeInfo *cube_info,
   /*
     Traverse any children.
   */
-  number_children=image->matte == MagickFalse ? 8UL : 16UL;
+  number_children=unique_image->matte == MagickFalse ? 8UL : 16UL;
   for (i=0; i < (ssize_t) number_children; i++)
     if (node_info->child[i] != (NodeInfo *) NULL)
-      UniqueColorsToImage(image,cube_info,node_info->child[i],exception);
+      UniqueColorsToImage(unique_image,unique_view,cube_info,
+        node_info->child[i],exception);
   if (node_info->level == (MaxTreeDepth-1))
     {
       register ColorPacket
@@ -1262,24 +1263,25 @@ static void UniqueColorsToImage(Image *image,CubeInfo *cube_info,
       p=node_info->list;
       for (i=0; i < (ssize_t) node_info->number_unique; i++)
       {
-        q=QueueAuthenticPixels(image,cube_info->x,0,1,1,exception);
+        q=QueueCacheViewAuthenticPixels(unique_view,cube_info->x,0,1,1,
+          exception);
         if (q == (PixelPacket *) NULL)
           continue;
-        indexes=GetAuthenticIndexQueue(image);
+        indexes=GetCacheViewAuthenticIndexQueue(unique_view);
         *q=p->pixel;
-        if (image->colorspace == CMYKColorspace)
+        if (unique_image->colorspace == CMYKColorspace)
           *indexes=p->index;
-        if (SyncAuthenticPixels(image,exception) == MagickFalse)
+        if (SyncCacheViewAuthenticPixels(unique_view,exception) == MagickFalse)
           break;
         cube_info->x++;
         p++;
       }
-      if (image->progress_monitor != (MagickProgressMonitor) NULL)
+      if (unique_image->progress_monitor != (MagickProgressMonitor) NULL)
         {
           MagickBooleanType
             proceed;
 
-          proceed=SetImageProgress(image,UniqueColorsImageTag,
+          proceed=SetImageProgress(unique_image,UniqueColorsImageTag,
             cube_info->progress,cube_info->colors);
           if (proceed == MagickFalse)
             status=MagickFalse;
@@ -1291,6 +1293,9 @@ static void UniqueColorsToImage(Image *image,CubeInfo *cube_info,
 MagickExport Image *UniqueImageColors(const Image *image,
   ExceptionInfo *exception)
 {
+  CacheView
+    *unique_view;
+
   CubeInfo
     *cube_info;
 
@@ -1309,7 +1314,10 @@ MagickExport Image *UniqueImageColors(const Image *image,
       unique_image=DestroyImage(unique_image);
       return((Image *) NULL);
     }
-  UniqueColorsToImage(unique_image,cube_info,cube_info->root,exception);
+  unique_view=AcquireCacheView(unique_image);
+  UniqueColorsToImage(unique_image,unique_view,cube_info,cube_info->root,
+    exception);
+  unique_view=DestroyCacheView(unique_view);
   if (cube_info->colors < MaxColormapSize)
     {
       QuantizeInfo
index 7f24af2c9d4b421ef6782ca93cb8e4d055566ccd..1efc6be2ff4cb6df0ec13062e64622fba9a38657 100644 (file)
@@ -133,7 +133,7 @@ static MagickRealType
 %
 */
 
-#define MagickREALTYPEPI ((MagickRealType) 3.14159265358979323846264338327950288420L)
+#define MagickPIL ((MagickRealType) 3.14159265358979323846264338327950288420L)
 
 static MagickRealType Bessel(const MagickRealType x,
   const ResizeFilter *magick_unused(resize_filter))
@@ -145,8 +145,8 @@ static MagickRealType Bessel(const MagickRealType x,
     http://www.ph.ed.ac.uk/%7ewjh/teaching/mo/slides/lens/lens.pdf.
   */
   if (x == 0.0)
-    return((MagickRealType) (0.25*MagickREALTYPEPI));
-  return(BesselOrderOne((MagickRealType) (MagickREALTYPEPI*x))/(x+x));
+    return((MagickRealType) (0.25*MagickPIL));
+  return(BesselOrderOne((MagickRealType) (MagickPIL*x))/(x+x));
 }
 
 static MagickRealType Blackman(const MagickRealType x,
@@ -158,7 +158,7 @@ static MagickRealType Blackman(const MagickRealType x,
     Refactored by Chantal Racette and Nicolas Robidoux to one trig
     call and five flops.
   */
-  const MagickRealType cospix = cos((double) (MagickREALTYPEPI*x));
+  const MagickRealType cospix = cos((double) (MagickPIL*x));
   return(0.34+cospix*(0.5+cospix*0.16));
 }
 
@@ -172,9 +172,9 @@ static MagickRealType Bohman(const MagickRealType x,
     and 7 flops, taking advantage of the fact that the support of
     Bohman is 1 (so that we know that sin(pi x) >= 0).
   */
-  const double cospix = cos((double) (MagickREALTYPEPI*x));
+  const double cospix = cos((double) (MagickPIL*x));
   const double sinpix = sqrt(1.0-cospix*cospix);
-  return((MagickRealType) ((1.0-x)*cospix+(1.0/MagickREALTYPEPI)*sinpix));
+  return((MagickRealType) ((1.0-x)*cospix+(1.0/MagickPIL)*sinpix));
 }
 
 static MagickRealType Box(const MagickRealType x,
@@ -246,7 +246,7 @@ static MagickRealType Hanning(const MagickRealType x,
   /*
     Cosine window function: .5 + .5 cos(pi x).
   */
-  const MagickRealType cospix = cos((double) (MagickREALTYPEPI*x));
+  const MagickRealType cospix = cos((double) (MagickPIL*x));
   return(0.5+0.5*cospix);
 }
 
@@ -256,7 +256,7 @@ static MagickRealType Hamming(const MagickRealType x,
   /*
     Offset cosine window function: .54 + .46 cos(pi x).
   */
-  const MagickRealType cospix = cos((double) (MagickREALTYPEPI*x));
+  const MagickRealType cospix = cos((double) (MagickPIL*x));
   return(0.54+0.46*cospix);
 }
 
@@ -333,7 +333,7 @@ static MagickRealType Sinc(const MagickRealType x,
   */
   if (x != 0.0)
   {
-    const MagickRealType pix = (MagickRealType) (MagickREALTYPEPI*x);
+    const MagickRealType pix = (MagickRealType) (MagickPIL*x);
     return(sin((double) pix)/pix);
   }
   return(1.0);
@@ -373,7 +373,7 @@ static MagickRealType SincFast(const MagickRealType x,
   */
   if (x > 4.0)
     {
-      const MagickRealType pix = (MagickRealType) (MagickREALTYPEPI*x);
+      const MagickRealType pix = (MagickRealType) (MagickPIL*x);
       return(sin((double) pix)/pix);
     }
   {
@@ -1666,6 +1666,9 @@ MagickExport Image *LiquidRescaleImage(const Image *image,const size_t columns,
 {
 #define LiquidRescaleImageTag  "Rescale/Image"
 
+  CacheView
+    *rescale_view;
+
   const char
     *map;
 
@@ -1775,6 +1778,7 @@ MagickExport Image *LiquidRescaleImage(const Image *image,const size_t columns,
     }
   GetMagickPixelPacket(rescale_image,&pixel);
   (void) lqr_carver_scan_reset(carver);
+  rescale_view=AcquireCacheView(rescale_image);
   while (lqr_carver_scan(carver,&x,&y,&packet) != 0)
   {
     register IndexPacket
@@ -1783,10 +1787,10 @@ MagickExport Image *LiquidRescaleImage(const Image *image,const size_t columns,
     register PixelPacket
       *restrict q;
 
-    q=QueueAuthenticPixels(rescale_image,x,y,1,1,exception);
+    q=QueueCacheviewAuthenticPixels(rescale_view,x,y,1,1,exception);
     if (q == (PixelPacket *) NULL)
       break;
-    rescale_indexes=GetAuthenticIndexQueue(rescale_image);
+    rescale_indexes=GetCacheViewAuthenticIndexQueue(rescale_view);
     pixel.red=QuantumRange*(packet[0]/255.0);
     pixel.green=QuantumRange*(packet[1]/255.0);
     pixel.blue=QuantumRange*(packet[2]/255.0);
@@ -1802,9 +1806,10 @@ MagickExport Image *LiquidRescaleImage(const Image *image,const size_t columns,
           pixel.opacity=QuantumRange*(packet[4]/255.0);
       }
     SetPixelPacket(rescale_image,&pixel,q,rescale_indexes);
-    if (SyncAuthenticPixels(rescale_image,exception) == MagickFalse)
+    if (SyncCacheViewAuthenticPixels(rescale_view,exception) == MagickFalse)
       break;
   }
+  rescale_view=DestroyCacheView(rescale_view);
   /*
     Relinquish resources.
   */
index 803cd30fcefbea90e06e2ec5f57ab9e4a1b21f91..16a67134a17ba29b3857ab24a80f0a17883ac7e3 100644 (file)
@@ -295,6 +295,10 @@ MagickExport Image *ChopImage(const Image *image,const RectangleInfo *chop_info,
 MagickExport Image *ConsolidateCMYKImages(const Image *images,
   ExceptionInfo *exception)
 {
+  CacheView
+    *cmyk_view,
+    *image_view;
+    
   Image
     *cmyk_image,
     *cmyk_images;
@@ -324,6 +328,8 @@ MagickExport Image *ConsolidateCMYKImages(const Image *images,
     if (SetImageStorageClass(cmyk_image,DirectClass) == MagickFalse)
       break;
     (void) SetImageColorspace(cmyk_image,CMYKColorspace);
+    image_view=AcquireCacheView(images);
+    cmyk_view=AcquireCacheView(cmyk_image);
     for (y=0; y < (ssize_t) images->rows; y++)
     {
       register const PixelPacket
@@ -335,8 +341,9 @@ MagickExport Image *ConsolidateCMYKImages(const Image *images,
       register PixelPacket
         *restrict q;
 
-      p=GetVirtualPixels(images,0,y,images->columns,1,exception);
-      q=QueueAuthenticPixels(cmyk_image,0,y,cmyk_image->columns,1,exception);
+      p=GetCacheViewVirtualPixels(image_view,0,y,images->columns,1,exception);
+      q=QueueCacheViewAuthenticPixels(cmyk_view,0,y,cmyk_image->columns,1,
+        exception);
       if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL))
         break;
       for (x=0; x < (ssize_t) images->columns; x++)
@@ -345,12 +352,16 @@ MagickExport Image *ConsolidateCMYKImages(const Image *images,
         p++;
         q++;
       }
-      if (SyncAuthenticPixels(cmyk_image,exception) == MagickFalse)
+      if (SyncCacheViewAuthenticPixels(cmyk_view,exception) == MagickFalse)
         break;
     }
+    cmyk_view=DestroyCacheView(cmyk_view);
+    image_view=DestroyCacheView(image_view);
     images=GetNextImageInList(images);
     if (images == (Image *) NULL)
       break;
+    image_view=AcquireCacheView(images);
+    cmyk_view=AcquireCacheView(cmyk_image);
     for (y=0; y < (ssize_t) images->rows; y++)
     {
       register const PixelPacket
@@ -362,8 +373,9 @@ MagickExport Image *ConsolidateCMYKImages(const Image *images,
       register PixelPacket
         *restrict q;
 
-      p=GetVirtualPixels(images,0,y,images->columns,1,exception);
-      q=GetAuthenticPixels(cmyk_image,0,y,cmyk_image->columns,1,exception);
+      p=GetCacheViewVirtualPixels(image_view,0,y,images->columns,1,exception);
+      q=GetCacheViewAuthenticPixels(cmyk_view,0,y,cmyk_image->columns,1,
+        exception);
       if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL))
         break;
       for (x=0; x < (ssize_t) images->columns; x++)
@@ -372,12 +384,16 @@ MagickExport Image *ConsolidateCMYKImages(const Image *images,
         p++;
         q++;
       }
-      if (SyncAuthenticPixels(cmyk_image,exception) == MagickFalse)
+      if (SyncCacheViewAuthenticPixels(cmyk_view,exception) == MagickFalse)
         break;
     }
+    cmyk_view=DestroyCacheView(cmyk_view);
+    image_view=DestroyCacheView(image_view);
     images=GetNextImageInList(images);
     if (images == (Image *) NULL)
       break;
+    image_view=AcquireCacheView(images);
+    cmyk_view=AcquireCacheView(cmyk_image);
     for (y=0; y < (ssize_t) images->rows; y++)
     {
       register const PixelPacket
@@ -389,8 +405,9 @@ MagickExport Image *ConsolidateCMYKImages(const Image *images,
       register PixelPacket
         *restrict q;
 
-      p=GetVirtualPixels(images,0,y,images->columns,1,exception);
-      q=GetAuthenticPixels(cmyk_image,0,y,cmyk_image->columns,1,exception);
+      p=GetCacheViewVirtualPixels(image_view,0,y,images->columns,1,exception);
+      q=GetCacheViewAuthenticPixels(cmyk_view,0,y,cmyk_image->columns,1,
+        exception);
       if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL))
         break;
       for (x=0; x < (ssize_t) images->columns; x++)
@@ -399,12 +416,16 @@ MagickExport Image *ConsolidateCMYKImages(const Image *images,
         p++;
         q++;
       }
-      if (SyncAuthenticPixels(cmyk_image,exception) == MagickFalse)
+      if (SyncCacheViewAuthenticPixels(cmyk_view,exception) == MagickFalse)
         break;
     }
+    cmyk_view=DestroyCacheView(cmyk_view);
+    image_view=DestroyCacheView(image_view);
     images=GetNextImageInList(images);
     if (images == (Image *) NULL)
       break;
+    image_view=AcquireCacheView(images);
+    cmyk_view=AcquireCacheView(cmyk_image);
     for (y=0; y < (ssize_t) images->rows; y++)
     {
       register const PixelPacket
@@ -419,19 +440,22 @@ MagickExport Image *ConsolidateCMYKImages(const Image *images,
       register PixelPacket
         *restrict q;
 
-      p=GetVirtualPixels(images,0,y,images->columns,1,exception);
-      q=GetAuthenticPixels(cmyk_image,0,y,cmyk_image->columns,1,exception);
+      p=GetCacheViewVirtualPixels(image_view,0,y,images->columns,1,exception);
+      q=GetCacheViewAuthenticPixels(cmyk_view,0,y,cmyk_image->columns,1,
+        exception);
       if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL))
         break;
-      indexes=GetAuthenticIndexQueue(cmyk_image);
+      indexes=GetCacheViewAuthenticIndexQueue(cmyk_view);
       for (x=0; x < (ssize_t) images->columns; x++)
       {
         indexes[x]=(IndexPacket) (QuantumRange-PixelIntensityToQuantum(p));
         p++;
       }
-      if (SyncAuthenticPixels(cmyk_image,exception) == MagickFalse)
+      if (SyncCacheViewAuthenticPixels(cmyk_view,exception) == MagickFalse)
         break;
     }
+    cmyk_view=DestroyCacheView(cmyk_view);
+    image_view=DestroyCacheView(image_view);
     AppendImageToList(&cmyk_images,cmyk_image);
     images=GetNextImageInList(images);
     if (images == (Image *) NULL)