mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-01-24 16:24:11 +03:00
Test for identical handling of getheader/getdata
This commit is contained in:
parent
676d0c3b3b
commit
1428e4140a
|
@ -685,13 +685,13 @@ def _get_global_header(im, info):
|
||||||
return [
|
return [
|
||||||
b"GIF"+version + # signature + version
|
b"GIF"+version + # signature + version
|
||||||
o16(im.size[0]) + # canvas width
|
o16(im.size[0]) + # canvas width
|
||||||
o16(im.size[1]) + # canvas height
|
o16(im.size[1]), # canvas height
|
||||||
|
|
||||||
# Logical Screen Descriptor
|
# Logical Screen Descriptor
|
||||||
# size of global color table + global color table flag
|
# size of global color table + global color table flag
|
||||||
o8(color_table_size + 128) + # packed fields
|
o8(color_table_size + 128), # packed fields
|
||||||
# background + reserved/aspect
|
# background + reserved/aspect
|
||||||
o8(background) + o8(0) +
|
o8(background) + o8(0),
|
||||||
|
|
||||||
# Global Color Table
|
# Global Color Table
|
||||||
_get_header_palette(palette_bytes)
|
_get_header_palette(palette_bytes)
|
||||||
|
|
17
Tests/images/gif_header_data.pkl
Normal file
17
Tests/images/gif_header_data.pkl
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
(((lp1
|
||||||
|
S'GIF87a\x10\x00\x10\x00'
|
||||||
|
p2
|
||||||
|
aS'\x87'
|
||||||
|
aS'\x00\x00'
|
||||||
|
p3
|
||||||
|
aS'\xff\xff\xff\xfe\xfe\xfe\xfd\xfd\xfd\xfc\xfc\xfc\xfb\xfb\xfb\xfa\xfa\xfa\xf9\xf9\xf9\xf8\xf8\xf8\xf7\xf7\xf7\xf6\xf6\xf6\xf5\xf5\xf5\xf4\xf4\xf4\xf3\xf3\xf3\xf2\xf2\xf2\xf1\xf1\xf1\xf0\xf0\xf0\xef\xef\xef\xee\xee\xee\xed\xed\xed\xec\xec\xec\xeb\xeb\xeb\xea\xea\xea\xe9\xe9\xe9\xe8\xe8\xe8\xe7\xe7\xe7\xe6\xe6\xe6\xe5\xe5\xe5\xe4\xe4\xe4\xe3\xe3\xe3\xe2\xe2\xe2\xe1\xe1\xe1\xe0\xe0\xe0\xdf\xdf\xdf\xde\xde\xde\xdd\xdd\xdd\xdc\xdc\xdc\xdb\xdb\xdb\xda\xda\xda\xd9\xd9\xd9\xd8\xd8\xd8\xd7\xd7\xd7\xd6\xd6\xd6\xd5\xd5\xd5\xd4\xd4\xd4\xd3\xd3\xd3\xd2\xd2\xd2\xd1\xd1\xd1\xd0\xd0\xd0\xcf\xcf\xcf\xce\xce\xce\xcd\xcd\xcd\xcc\xcc\xcc\xcb\xcb\xcb\xca\xca\xca\xc9\xc9\xc9\xc8\xc8\xc8\xc7\xc7\xc7\xc6\xc6\xc6\xc5\xc5\xc5\xc4\xc4\xc4\xc3\xc3\xc3\xc2\xc2\xc2\xc1\xc1\xc1\xc0\xc0\xc0\xbf\xbf\xbf\xbe\xbe\xbe\xbd\xbd\xbd\xbc\xbc\xbc\xbb\xbb\xbb\xba\xba\xba\xb9\xb9\xb9\xb8\xb8\xb8\xb7\xb7\xb7\xb6\xb6\xb6\xb5\xb5\xb5\xb4\xb4\xb4\xb3\xb3\xb3\xb2\xb2\xb2\xb1\xb1\xb1\xb0\xb0\xb0\xaf\xaf\xaf\xae\xae\xae\xad\xad\xad\xac\xac\xac\xab\xab\xab\xaa\xaa\xaa\xa9\xa9\xa9\xa8\xa8\xa8\xa7\xa7\xa7\xa6\xa6\xa6\xa5\xa5\xa5\xa4\xa4\xa4\xa3\xa3\xa3\xa2\xa2\xa2\xa1\xa1\xa1\xa0\xa0\xa0\x9f\x9f\x9f\x9e\x9e\x9e\x9d\x9d\x9d\x9c\x9c\x9c\x9b\x9b\x9b\x9a\x9a\x9a\x99\x99\x99\x98\x98\x98\x97\x97\x97\x96\x96\x96\x95\x95\x95\x94\x94\x94\x93\x93\x93\x92\x92\x92\x91\x91\x91\x90\x90\x90\x8f\x8f\x8f\x8e\x8e\x8e\x8d\x8d\x8d\x8c\x8c\x8c\x8b\x8b\x8b\x8a\x8a\x8a\x89\x89\x89\x88\x88\x88\x87\x87\x87\x86\x86\x86\x85\x85\x85\x84\x84\x84\x83\x83\x83\x82\x82\x82\x81\x81\x81\x80\x80\x80\x7f\x7f\x7f~~~}}}|||{{{zzzyyyxxxwwwvvvuuutttsssrrrqqqpppooonnnmmmlllkkkjjjiiihhhgggfffeeedddcccbbbaaa```___^^^]]]\\\\\\[[[ZZZYYYXXXWWWVVVUUUTTTSSSRRRQQQPPPOOONNNMMMLLLKKKJJJIIIHHHGGGFFFEEEDDDCCCBBBAAA@@@???>>>===<<<;;;:::999888777666555444333222111000///...---,,,+++***)))(((\'\'\'&&&%%%$$$###"""!!! \x1f\x1f\x1f\x1e\x1e\x1e\x1d\x1d\x1d\x1c\x1c\x1c\x1b\x1b\x1b\x1a\x1a\x1a\x19\x19\x19\x18\x18\x18\x17\x17\x17\x16\x16\x16\x15\x15\x15\x14\x14\x14\x13\x13\x13\x12\x12\x12\x11\x11\x11\x10\x10\x10\x0f\x0f\x0f\x0e\x0e\x0e\r\r\r\x0c\x0c\x0c\x0b\x0b\x0b\n\n\n\t\t\t\x08\x08\x08\x07\x07\x07\x06\x06\x06\x05\x05\x05\x04\x04\x04\x03\x03\x03\x02\x02\x02\x01\x01\x01\x00\x00\x00'
|
||||||
|
p4
|
||||||
|
aNtp5
|
||||||
|
(lp6
|
||||||
|
S',\x00\x00\x00\x00\x10\x00\x10\x00\x00'
|
||||||
|
p7
|
||||||
|
aS'\x08'
|
||||||
|
aS'o\x00\x11\x08\x1cH\xb0 \x02\x0c\x08\x13*\\\x88\x01\x85\xc3\x87\x10#\xa2\xc0A\xb1\xa2\xc5\x8b8\x90h\xdc\xc8\xb1#\x12, C\x8a\x1c\x89\x05\x8d\xc9\x93(S\xa2\xc1\xc3\xb2\xa5\xcb\x97x\x10\xc9\x9cI\xb3&"L8s\xea\xdc\x89\t\x95\xcf\x9f@\x83\xa2\xc2E\xb4\xa8\xd1\xa3\xb8\x90)]\xca\xb4)2lP\xa3J\x9d\x8a\r\x9d\xd5\xabX\xb3\xa2\xc3\xc7\xb5\xab\xd7\xaf\xf8\x02\x02'
|
||||||
|
p8
|
||||||
|
aS'\x00'
|
||||||
|
at.
|
|
@ -505,6 +505,35 @@ class TestFileGif(PillowTestCase):
|
||||||
reloaded = Image.open(out)
|
reloaded = Image.open(out)
|
||||||
self.assert_image_equal(reloaded.convert('L'), im.convert('L'))
|
self.assert_image_equal(reloaded.convert('L'), im.convert('L'))
|
||||||
|
|
||||||
|
def test_getdata(self):
|
||||||
|
# test getheader/getdata against legacy values
|
||||||
|
# Create a 'P' image with holes in the palette
|
||||||
|
im = Image._wedge().resize((16,16))
|
||||||
|
im.putpalette(ImagePalette.ImagePalette('RGB'))
|
||||||
|
im.info = {'background':0}
|
||||||
|
|
||||||
|
passed_palette = bytes(bytearray([255-i//3 for i in range(768)]))
|
||||||
|
|
||||||
|
GifImagePlugin._FORCE_OPTIMIZE = True
|
||||||
|
try:
|
||||||
|
h = GifImagePlugin.getheader(im, passed_palette)
|
||||||
|
d = GifImagePlugin.getdata(im)
|
||||||
|
|
||||||
|
import cPickle as pickle
|
||||||
|
# Enable to get target values on pre-refactor version
|
||||||
|
# with open('Tests/images/gif_header_data.pkl', 'wb') as f:
|
||||||
|
# f.write(pickle.dumps((h,d)))
|
||||||
|
with open('Tests/images/gif_header_data.pkl', 'rb') as f:
|
||||||
|
(h_target,d_target) = pickle.loads(f.read())
|
||||||
|
|
||||||
|
self.assertEqual(h, h_target)
|
||||||
|
self.assertEqual(d, d_target)
|
||||||
|
finally:
|
||||||
|
GifImagePlugin._FORCE_OPTIMIZE = False
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user