From 309ba7789c2164a0b1ae9bf10d684927e427c282 Mon Sep 17 00:00:00 2001
From: dbakanov <dbakanov@gehtsoft.com>
Date: Mon, 15 Jul 2019 17:08:34 +0600
Subject: [PATCH] - Fix compression of PNG image's transparency mask
---
include/hpdf_image.h | 3 ++-
src/hpdf_doc_png.c | 5 +----
src/hpdf_image_png.c | 8 +++++++-
3 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/include/hpdf_image.h b/include/hpdf_image.h
index 4e1aa6c..c8f9967 100644
--- a/include/hpdf_image.h
+++ b/include/hpdf_image.h
@@ -41,7 +41,8 @@ HPDF_Image
HPDF_Image_LoadPngImage (HPDF_MMgr mmgr,
HPDF_Stream png_data,
HPDF_Xref xref,
- HPDF_BOOL delayed_loading);
+ HPDF_BOOL delayed_loading,
+ HPDF_BOOL compression);
#endif
diff --git a/src/hpdf_doc_png.c b/src/hpdf_doc_png.c
index bad87c6..769afce 100644
--- a/src/hpdf_doc_png.c
+++ b/src/hpdf_doc_png.c
@@ -159,10 +159,7 @@ LoadPngImageFromStream (HPDF_Doc pdf,
HPDF_PTRACE ((" HPDF_LoadPngImageFromStream\n"));
image = HPDF_Image_LoadPngImage (pdf->mmgr, imagedata, pdf->xref,
- delayed_loading);
-
- if (image && (pdf->compression_mode & HPDF_COMP_IMAGE))
- image->filter = HPDF_STREAM_FILTER_FLATE_DECODE;
+ delayed_loading, (pdf->compression_mode & HPDF_COMP_IMAGE) != 0);
return image;
}
diff --git a/src/hpdf_image_png.c b/src/hpdf_image_png.c
index 3f20a77..c02ca19 100644
--- a/src/hpdf_image_png.c
+++ b/src/hpdf_image_png.c
@@ -380,7 +380,8 @@ HPDF_Image
HPDF_Image_LoadPngImage (HPDF_MMgr mmgr,
HPDF_Stream png_data,
HPDF_Xref xref,
- HPDF_BOOL delayed_loading)
+ HPDF_BOOL delayed_loading,
+ HPDF_BOOL compression)
{
HPDF_STATUS ret;
HPDF_Dict image;
@@ -401,6 +402,9 @@ HPDF_Image_LoadPngImage (HPDF_MMgr mmgr,
if (!image)
return NULL;
+ if (compression != 0)
+ image->filter = HPDF_STREAM_FILTER_FLATE_DECODE;
+
image->header.obj_class |= HPDF_OSUBCLASS_XOBJECT;
ret += HPDF_Dict_AddName (image, "Type", "XObject");
ret += HPDF_Dict_AddName (image, "Subtype", "Image");
@@ -485,6 +489,8 @@ LoadPngData (HPDF_Dict image,
goto Exit;
}
+ smask->filter = image->filter;
+
smask->header.obj_class |= HPDF_OSUBCLASS_XOBJECT;
ret = HPDF_Dict_AddName (smask, "Type", "XObject");
ret += HPDF_Dict_AddName (smask, "Subtype", "Image");
--
2.21.1 (Apple Git-122.3)