]> granicus.if.org Git - imagemagick/commitdiff
https://github.com/ImageMagick/ImageMagick/issues/417
authorCristy <urban-warrior@imagemagick.org>
Mon, 3 Apr 2017 21:21:42 +0000 (17:21 -0400)
committerCristy <urban-warrior@imagemagick.org>
Mon, 3 Apr 2017 22:34:31 +0000 (18:34 -0400)
coders/pdf.c
coders/yuv.c

index ff09d4ada6b9b792ee399bc3d27a23d51333dfa1..4ccd280886cc27070513dee1354c6f533f08b933 100644 (file)
@@ -2220,16 +2220,28 @@ RestoreMSCWarning
           (double) object);
         (void) WriteBlobString(image,buffer);
         (void) FormatLocaleString(buffer,MagickPathExtent,"<<\n/N %.20g\n"
-          "/Filter /ASCIIHexDecode\n/Length %.20g\n/Alternate /%s\n>>\n"
-          "stream\n",(double) channels,2.0*GetStringInfoLength(profile),device);
+          "/Filter /ASCII85Decode\n/Length %.20g 0 R\n/Alternate /%s\n>>\n"
+          "stream\n",(double) channels,(double) object+1,device);
         (void) WriteBlobString(image,buffer);
+        offset=TellBlob(image);
+        Ascii85Initialize(image);
         p=GetStringInfoDatum(profile);
         for (i=0; i < (ssize_t) GetStringInfoLength(profile); i++)
-        {
-          (void) FormatLocaleString(buffer,MagickPathExtent,"%02x",*p++);
-          (void) WriteBlobString(image,buffer);
-        }
-        (void) WriteBlobString(image,"\nendstream\n");
+          Ascii85Encode(image,(unsigned char) *p++);
+        Ascii85Flush(image);
+        offset=TellBlob(image)-offset;
+        (void) WriteBlobString(image,"endstream\n");
+        (void) WriteBlobString(image,"endobj\n");
+        /*
+          Write Length object.
+        */
+        xref[object++]=TellBlob(image);
+        (void) FormatLocaleString(buffer,MagickPathExtent,"%.20g 0 obj\n",
+          (double) object);
+        (void) WriteBlobString(image,buffer);
+        (void) FormatLocaleString(buffer,MagickPathExtent,"%.20g\n",(double)
+          offset);
+        (void) WriteBlobString(image,buffer);
       }
     (void) WriteBlobString(image,"endobj\n");
     /*
index 5a54cd82b176713a5eb80d907697a0d81faf251d..6ba57ecefe73114db39e54d86f60ddb86d1dbfe6 100644 (file)
@@ -678,7 +678,7 @@ static MagickBooleanType WriteYUVImage(const ImageInfo *image_info,Image *image,
             exception);
           if (s == (const Quantum *) NULL)
             break;
-          for (x=0; x < (ssize_t) yuv_image->columns; x++)
+          for (x=0; x < (ssize_t) yuv_image->columns; x+=2)
           {
             if (quantum == 1)
               {
@@ -706,7 +706,6 @@ static MagickBooleanType WriteYUVImage(const ImageInfo *image_info,Image *image,
               }
             p+=GetPixelChannels(yuv_image);
             s++;
-            x++;
           }
           if (image->previous == (Image *) NULL)
             {