diff --git a/Tests/images/bc5u.dds b/Tests/images/bc5u.dds new file mode 100644 index 00000000000..4e4773cd717 Binary files /dev/null and b/Tests/images/bc5u.dds differ diff --git a/Tests/test_file_dds.py b/Tests/test_file_dds.py index cac4108a8f0..ae4831d4848 100644 --- a/Tests/test_file_dds.py +++ b/Tests/test_file_dds.py @@ -16,6 +16,7 @@ TEST_FILE_DX10_BC5_UNORM = "Tests/images/bc5_unorm.dds" TEST_FILE_DX10_BC5_SNORM = "Tests/images/bc5_snorm.dds" TEST_FILE_BC5S = "Tests/images/bc5s.dds" +TEST_FILE_BC5U = "Tests/images/bc5u.dds" TEST_FILE_BC6H = "Tests/images/bc6h.dds" TEST_FILE_BC6HS = "Tests/images/bc6h_sf.dds" TEST_FILE_DX10_BC7 = "Tests/images/bc7-argb-8bpp_MipMaps-1.dds" @@ -81,10 +82,18 @@ def test_sanity_ati1(): assert_image_equal_tofile(im, TEST_FILE_ATI1.replace(".dds", ".png")) -def test_sanity_ati2(): - """Check ATI2 images can be opened""" +@pytest.mark.parametrize( + "image_path", + ( + TEST_FILE_ATI2, + # hexeditted to use BC5U FourCC + TEST_FILE_BC5U, + ), +) +def test_sanity_ati2_bc5u(image_path): + """Check ATI2 and BC5U images can be opened""" - with Image.open(TEST_FILE_ATI2) as im: + with Image.open(image_path) as im: im.load() assert im.format == "DDS" diff --git a/src/PIL/DdsImagePlugin.py b/src/PIL/DdsImagePlugin.py index 1368ae24e59..4da33332edf 100644 --- a/src/PIL/DdsImagePlugin.py +++ b/src/PIL/DdsImagePlugin.py @@ -173,7 +173,7 @@ def _open(self): self.pixel_format = "BC4" n = 4 self._mode = "L" - elif fourcc == b"ATI2": + elif fourcc in (b"ATI2", b"BC5U"): self.pixel_format = "BC5" n = 5 self._mode = "RGB"