src/img2pdf.py: Disallow TIFF input with more than 8 bits per sample because PIL will silently convert it to 8 bits per sample
This commit is contained in:
parent
a2b969640a
commit
b758b54ce8
1 changed files with 11 additions and 0 deletions
|
@ -898,6 +898,17 @@ def read_images(rawdata, colorspace, first_frame_only=False):
|
||||||
if first_frame_only and img_page_count > 0:
|
if first_frame_only and img_page_count > 0:
|
||||||
break
|
break
|
||||||
|
|
||||||
|
# PIL is unable to preserve the data of 16-bit RGB TIFF files and will
|
||||||
|
# convert it to 8-bit without the possibility to retrieve the original
|
||||||
|
# data
|
||||||
|
# https://github.com/python-pillow/Pillow/issues/1888
|
||||||
|
#
|
||||||
|
# Some tiff images do not have BITSPERSAMPLE set. Use this to create
|
||||||
|
# such a tiff: tiffset -u 258 test.tif
|
||||||
|
if imgformat == ImageFormat.TIFF \
|
||||||
|
and max(imgdata.tag_v2.get(TiffImagePlugin.BITSPERSAMPLE, [1])) > 8:
|
||||||
|
raise ValueError("PIL is unable to preserve more than 8 bits per sample")
|
||||||
|
|
||||||
# We can directly copy the data out of a CCITT Group 4 encoded TIFF, if it
|
# We can directly copy the data out of a CCITT Group 4 encoded TIFF, if it
|
||||||
# only contains a single strip
|
# only contains a single strip
|
||||||
if imgformat == ImageFormat.TIFF \
|
if imgformat == ImageFormat.TIFF \
|
||||||
|
|
Loading…
Reference in a new issue