Skip to content

Commit

Permalink
Merge pull request #6384 from radarhere/bmp_rle8
Browse files Browse the repository at this point in the history
Fixed loading L mode BMP RLE8 images
  • Loading branch information
hugovk committed Jun 21, 2022
2 parents 5fc3b6e + 3e8a9b2 commit e9715b2
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 1 deletion.
Binary file added Tests/images/hopper_rle8_greyscale.bmp
Binary file not shown.
3 changes: 3 additions & 0 deletions Tests/test_file_bmp.py
Expand Up @@ -134,6 +134,9 @@ def test_rle8():
with Image.open("Tests/images/hopper_rle8.bmp") as im:
assert_image_similar_tofile(im.convert("RGB"), "Tests/images/hopper.bmp", 12)

with Image.open("Tests/images/hopper_rle8_greyscale.bmp") as im:
assert_image_equal_tofile(im, "Tests/images/bw_gradient.png")

# This test image has been manually hexedited
# to have rows with too much data
with Image.open("Tests/images/hopper_rle8_row_overflow.bmp") as im:
Expand Down
3 changes: 2 additions & 1 deletion src/PIL/BmpImagePlugin.py
Expand Up @@ -321,7 +321,8 @@ def decode(self, buffer):
# align to 16-bit word boundary
if self.fd.tell() % 2 != 0:
self.fd.seek(1, os.SEEK_CUR)
self.set_as_raw(bytes(data), ("P", 0, self.args[-1]))
rawmode = "L" if self.mode == "L" else "P"
self.set_as_raw(bytes(data), (rawmode, 0, self.args[-1]))
return -1, 0


Expand Down

0 comments on commit e9715b2

Please sign in to comment.