Fix UnboundLocalError when considering ImageMasks for optimization

Uncovered by test file in issue 667, although unrelated to that issue.
This commit is contained in:
James R. Barlow 2020-11-03 01:08:14 -08:00
parent 7f73a6ed1e
commit 54bbbfdeb3
No known key found for this signature in database
GPG Key ID: E54A300D567E1260

View File

@ -115,13 +115,14 @@ def extract_image_jbig2(
and filtdp[0] != Name.JBIG2Decode
and jbig2enc.available()
):
try:
# Save any colorspace associated with the image, so that we
# will export a pure 1-bit PNG with no palette or ICC profile.
# Showing the palette or ICC to jbig2enc will cause it to perform
# colorspace transform to 1bpp, which will conflict the palette or
# ICC if it exists.
colorspace = pim.obj.ColorSpace
colorspace = pim.obj.get(pikepdf.Name.ColorSpace, None)
if colorspace is not None or pim.image_mask:
try:
# Set to DeviceGray temporarily; we already in 1 bpc.
pim.obj.ColorSpace = pikepdf.Name.DeviceGray
imgname = root / f'{xref:08d}'
@ -132,7 +133,10 @@ def extract_image_jbig2(
return None
finally:
# Restore image colorspace after temporarily setting it to DeviceGray
if colorspace is not None:
pim.obj.ColorSpace = colorspace
else:
del pim.obj.ColorSpace
return XrefExt(xref, ext)
return None