From d716278d20e5d270babf88f92d57bcd49f02910e Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Sat, 26 Oct 2019 17:53:50 +1100 Subject: [PATCH] Corrected DdsImagePlugin setting info gamma --- Tests/images/DXGI_FORMAT_BC7_UNORM_SRGB.dds | Bin 0 -> 516 bytes Tests/images/DXGI_FORMAT_BC7_UNORM_SRGB.png | Bin 0 -> 106 bytes Tests/test_file_dds.py | 16 ++++++++++++++++ src/PIL/DdsImagePlugin.py | 2 +- 4 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 Tests/images/DXGI_FORMAT_BC7_UNORM_SRGB.dds create mode 100644 Tests/images/DXGI_FORMAT_BC7_UNORM_SRGB.png diff --git a/Tests/images/DXGI_FORMAT_BC7_UNORM_SRGB.dds b/Tests/images/DXGI_FORMAT_BC7_UNORM_SRGB.dds new file mode 100644 index 0000000000000000000000000000000000000000..9b4d8e21f646b498275ea69582fe02fe905ce404 GIT binary patch literal 516 zcmZ>930A0KU|?Vu;9?K}(jd&h2u2L7AT|j=0jQP*h+QHK4X|nB5OBZ{P6moFLq&ns zf`P#Q|Nre7)~s5!%4?E}=Oh&jK2X(x|LYO*=zL1`qnn4$r__8x`qAal?MLUMtCz3& r!1&?uLwUIa{D15}FbjbBzuDQ?e$+Ft7ce-izyA7bRilHDAOrvaQ6i>% literal 0 HcmV?d00001 diff --git a/Tests/images/DXGI_FORMAT_BC7_UNORM_SRGB.png b/Tests/images/DXGI_FORMAT_BC7_UNORM_SRGB.png new file mode 100644 index 0000000000000000000000000000000000000000..57177fe2bb83d99a200a0008a94b4545cc6eb99a GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`hMq2tAr*6y|NQ@N&un+##EFh@ zM&Y=-E)9XqY|V^4JUl!VkAMFE|G&qi^xz7{=7S6jY(X5-m*NjJ05vmsy85}Sb4q9e E01k&CqyPW_ literal 0 HcmV?d00001 diff --git a/Tests/test_file_dds.py b/Tests/test_file_dds.py index 498c64f21..8ef90e86e 100644 --- a/Tests/test_file_dds.py +++ b/Tests/test_file_dds.py @@ -8,6 +8,7 @@ TEST_FILE_DXT1 = "Tests/images/dxt1-rgb-4bbp-noalpha_MipMaps-1.dds" TEST_FILE_DXT3 = "Tests/images/dxt3-argb-8bbp-explicitalpha_MipMaps-1.dds" TEST_FILE_DXT5 = "Tests/images/dxt5-argb-8bbp-interpolatedalpha_MipMaps-1.dds" TEST_FILE_DX10_BC7 = "Tests/images/bc7-argb-8bpp_MipMaps-1.dds" +TEST_FILE_DX10_BC7_UNORM_SRGB = "Tests/images/DXGI_FORMAT_BC7_UNORM_SRGB.dds" TEST_FILE_UNCOMPRESSED_RGB = "Tests/images/uncompressed_rgb.dds" @@ -69,6 +70,21 @@ class TestFileDds(PillowTestCase): self.assert_image_equal(target, im) + def test_dx10_bc7_unorm_srgb(self): + """Check DX10 unsigned normalized integer images can be opened""" + + target = Image.open(TEST_FILE_DX10_BC7_UNORM_SRGB.replace(".dds", ".png")) + + im = Image.open(TEST_FILE_DX10_BC7_UNORM_SRGB) + im.load() + + self.assertEqual(im.format, "DDS") + self.assertEqual(im.mode, "RGBA") + self.assertEqual(im.size, (16, 16)) + self.assertEqual(im.info["gamma"], 1 / 2.2) + + self.assert_image_equal(target, im) + def test_unimplemented_dxgi_format(self): self.assertRaises( NotImplementedError, diff --git a/src/PIL/DdsImagePlugin.py b/src/PIL/DdsImagePlugin.py index e6622d14f..28a582ec4 100644 --- a/src/PIL/DdsImagePlugin.py +++ b/src/PIL/DdsImagePlugin.py @@ -155,7 +155,7 @@ class DdsImageFile(ImageFile.ImageFile): n = 7 elif dxgi_format == DXGI_FORMAT_BC7_UNORM_SRGB: self.pixel_format = "BC7" - self.im_info["gamma"] = 1 / 2.2 + self.info["gamma"] = 1 / 2.2 n = 7 else: raise NotImplementedError(