mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-25 17:36:18 +03:00
Drop excess values in BITSPERSAMPLE
This commit is contained in:
parent
8b7c37dc0c
commit
bb5a090f60
BIN
Tests/images/tiff_wrong_bits_per_sample_2.tiff
Normal file
BIN
Tests/images/tiff_wrong_bits_per_sample_2.tiff
Normal file
Binary file not shown.
|
@ -90,11 +90,15 @@ class TestFileTiff:
|
|||
|
||||
assert_image_similar_tofile(im, "Tests/images/pil136.png", 1)
|
||||
|
||||
def test_wrong_bits_per_sample(self):
|
||||
with Image.open("Tests/images/tiff_wrong_bits_per_sample.tiff") as im:
|
||||
assert im.mode == "RGBA"
|
||||
assert im.size == (52, 53)
|
||||
assert im.tile == [("raw", (0, 0, 52, 53), 160, ("RGBA", 0, 1))]
|
||||
@pytest.mark.parametrize("file_name,mode,w,h,offset", [
|
||||
("tiff_wrong_bits_per_sample.tiff","RGBA",52,53,160),
|
||||
("tiff_wrong_bits_per_sample_2.tiff","RGB",16,16,8),
|
||||
])
|
||||
def test_wrong_bits_per_sample(self, file_name, mode, w, h, offset):
|
||||
with Image.open("Tests/images/" + file_name) as im:
|
||||
assert im.mode == mode
|
||||
assert im.size == (w, h)
|
||||
assert im.tile == [("raw", (0, 0, w, h), offset, (mode, 0, 1))]
|
||||
im.load()
|
||||
|
||||
def test_set_legacy_api(self):
|
||||
|
|
|
@ -1308,8 +1308,12 @@ class TiffImageFile(ImageFile.ImageFile):
|
|||
bps_count = 1
|
||||
bps_count += len(extra_tuple)
|
||||
# Some files have only one value in bps_tuple,
|
||||
# while should have more. Fix it
|
||||
if bps_count > len(bps_tuple) and len(bps_tuple) == 1:
|
||||
# while should have more. Or have more values
|
||||
# than expected. Fix it
|
||||
bps_actual_count = len(bps_tuple)
|
||||
if bps_count < bps_actual_count:
|
||||
bps_tuple = bps_tuple[:bps_count]
|
||||
elif bps_count > bps_actual_count and bps_actual_count == 1:
|
||||
bps_tuple = bps_tuple * bps_count
|
||||
|
||||
samplesPerPixel = self.tag_v2.get(
|
||||
|
|
Loading…
Reference in New Issue
Block a user