mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 01:47:47 +03:00 
			
		
		
		
	Merge pull request #5426 from radarhere/undefined_zero
Fixed UNDEFINED TIFF tag of length 0 being changed in roundtrip
This commit is contained in:
		
						commit
						d2f2fbacaa
					
				| 
						 | 
					@ -185,6 +185,21 @@ def test_iptc(tmp_path):
 | 
				
			||||||
        im.save(out)
 | 
					        im.save(out)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_undefined_zero(tmp_path):
 | 
				
			||||||
 | 
					    # Check that the tag has not been changed since this test was created
 | 
				
			||||||
 | 
					    tag = TiffTags.TAGS_V2[45059]
 | 
				
			||||||
 | 
					    assert tag.type == TiffTags.UNDEFINED
 | 
				
			||||||
 | 
					    assert tag.length == 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    info = TiffImagePlugin.ImageFileDirectory(b"II*\x00\x08\x00\x00\x00")
 | 
				
			||||||
 | 
					    info[45059] = b"test"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Assert that the tag value does not change by setting it to itself
 | 
				
			||||||
 | 
					    original = info[45059]
 | 
				
			||||||
 | 
					    info[45059] = info[45059]
 | 
				
			||||||
 | 
					    assert info[45059] == original
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_empty_metadata():
 | 
					def test_empty_metadata():
 | 
				
			||||||
    f = io.BytesIO(b"II*\x00\x08\x00\x00\x00")
 | 
					    f = io.BytesIO(b"II*\x00\x08\x00\x00\x00")
 | 
				
			||||||
    head = f.read(8)
 | 
					    head = f.read(8)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -565,7 +565,8 @@ class ImageFileDirectory_v2(MutableMapping):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if self.tagtype[tag] == TiffTags.UNDEFINED:
 | 
					        if self.tagtype[tag] == TiffTags.UNDEFINED:
 | 
				
			||||||
            values = [
 | 
					            values = [
 | 
				
			||||||
                value.encode("ascii", "replace") if isinstance(value, str) else value
 | 
					                v.encode("ascii", "replace") if isinstance(v, str) else v
 | 
				
			||||||
 | 
					                for v in values
 | 
				
			||||||
            ]
 | 
					            ]
 | 
				
			||||||
        elif self.tagtype[tag] == TiffTags.RATIONAL:
 | 
					        elif self.tagtype[tag] == TiffTags.RATIONAL:
 | 
				
			||||||
            values = [float(v) if isinstance(v, int) else v for v in values]
 | 
					            values = [float(v) if isinstance(v, int) else v for v in values]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user