Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 56cfb43

Browse filesBrowse files
authored
Merge pull request #15175 from anntzer/pdfimage
Simplify pdf image output.
2 parents cbd0409 + 2a63d63 commit 56cfb43
Copy full SHA for 56cfb43

File tree

Expand file treeCollapse file tree

1 file changed

+20
-24
lines changed
Filter options
Expand file treeCollapse file tree

1 file changed

+20
-24
lines changed

‎lib/matplotlib/backends/backend_pdf.py

Copy file name to clipboardExpand all lines: lib/matplotlib/backends/backend_pdf.py
+20-24Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1412,14 +1412,14 @@ def imageObject(self, image):
14121412

14131413
def _unpack(self, im):
14141414
"""
1415-
Unpack the image object im into height, width, data, alpha,
1416-
where data and alpha are HxWx3 (RGB) or HxWx1 (grayscale or alpha)
1417-
arrays, except alpha is None if the image is fully opaque.
1415+
Unpack image array *im* into ``(data, alpha)``, which have shape
1416+
``(height, width, 3)`` (RGB) or ``(height, width, 1)`` (grayscale or
1417+
alpha), except that alpha is None if the image is fully opaque.
14181418
"""
14191419
h, w = im.shape[:2]
14201420
im = im[::-1]
14211421
if im.ndim == 2:
1422-
return h, w, im, None
1422+
return im, None
14231423
else:
14241424
rgb = im[:, :, :3]
14251425
rgb = np.array(rgb, order='C')
@@ -1432,7 +1432,7 @@ def _unpack(self, im):
14321432
alpha = np.array(alpha, order='C')
14331433
else:
14341434
alpha = None
1435-
return h, w, rgb, alpha
1435+
return rgb, alpha
14361436

14371437
def _writePng(self, data):
14381438
"""
@@ -1455,27 +1455,24 @@ def _writePng(self, data):
14551455
buffer.seek(length, 1)
14561456
buffer.seek(4, 1) # skip CRC
14571457

1458-
def _writeImg(self, data, height, width, grayscale, id, smask=None):
1458+
def _writeImg(self, data, id, smask=None):
14591459
"""
1460-
Write the image *data* of size *height* x *width*, as grayscale
1461-
if *grayscale* is true and RGB otherwise, as pdf object *id*
1462-
and with the soft mask (alpha channel) *smask*, which should be
1463-
either None or a *height* x *width* x 1 array.
1460+
Write the image *data*, of shape ``(height, width, 1)`` (grayscale) or
1461+
``(height, width, 3)`` (RGB), as pdf object *id* and with the soft mask
1462+
(alpha channel) *smask*, which should be either None or a ``(height,
1463+
width, 1)`` array.
14641464
"""
1465-
1466-
obj = {'Type': Name('XObject'),
1467-
'Subtype': Name('Image'),
1468-
'Width': width,
1469-
'Height': height,
1470-
'ColorSpace': Name('DeviceGray' if grayscale
1471-
else 'DeviceRGB'),
1465+
height, width, colors = data.shape
1466+
obj = {'Type': Name('XObject'),
1467+
'Subtype': Name('Image'),
1468+
'Width': width,
1469+
'Height': height,
1470+
'ColorSpace': Name({1: 'DeviceGray', 3: 'DeviceRGB'}[colors]),
14721471
'BitsPerComponent': 8}
14731472
if smask:
14741473
obj['SMask'] = smask
14751474
if rcParams['pdf.compression']:
1476-
png = {'Predictor': 10,
1477-
'Colors': 1 if grayscale else 3,
1478-
'Columns': width}
1475+
png = {'Predictor': 10, 'Colors': colors, 'Columns': width}
14791476
else:
14801477
png = None
14811478
self.beginStream(
@@ -1492,14 +1489,13 @@ def _writeImg(self, data, height, width, grayscale, id, smask=None):
14921489

14931490
def writeImages(self):
14941491
for img, name, ob in self._images.values():
1495-
height, width, data, adata = self._unpack(img)
1492+
data, adata = self._unpack(img)
14961493
if adata is not None:
14971494
smaskObject = self.reserveObject("smask")
1498-
self._writeImg(adata, height, width, True, smaskObject.id)
1495+
self._writeImg(adata, smaskObject.id)
14991496
else:
15001497
smaskObject = None
1501-
self._writeImg(data, height, width, False,
1502-
ob.id, smaskObject)
1498+
self._writeImg(data, ob.id, smaskObject)
15031499

15041500
def markerObject(self, path, trans, fill, stroke, lw, joinstyle,
15051501
capstyle):

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.