From 392d5673523973d3a421e958f369a046391931cf Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Wed, 13 Apr 2016 18:27:46 +1000 Subject: [PATCH] Added CMYK mode for opening EPS files --- PIL/EpsImagePlugin.py | 2 +- Tests/images/pil_sample_cmyk.eps | Bin 0 -> 81368 bytes Tests/test_file_eps.py | 6 ++++++ 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 Tests/images/pil_sample_cmyk.eps diff --git a/PIL/EpsImagePlugin.py b/PIL/EpsImagePlugin.py index a950c52b9..9a668125a 100644 --- a/PIL/EpsImagePlugin.py +++ b/PIL/EpsImagePlugin.py @@ -201,7 +201,7 @@ class EpsImageFile(ImageFile.ImageFile): format = "EPS" format_description = "Encapsulated Postscript" - mode_map = {1: "L", 2: "LAB", 3: "RGB"} + mode_map = {1: "L", 2: "LAB", 3: "RGB", 4: "CMYK"} def _open(self): (length, offset) = self._find_offset(self.fp) diff --git a/Tests/images/pil_sample_cmyk.eps b/Tests/images/pil_sample_cmyk.eps new file mode 100644 index 0000000000000000000000000000000000000000..3b4d4de1dd45ce65c7868fca902b616f62f3451a GIT binary patch literal 81368 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 e-*=xbzxm