mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-24 17:06:16 +03:00
Changed GifImagePlugin to include use image info params
This commit is contained in:
parent
1f8a37841c
commit
f64bc891d4
|
@ -24,7 +24,8 @@
|
||||||
# See the README file for information on usage and redistribution.
|
# See the README file for information on usage and redistribution.
|
||||||
#
|
#
|
||||||
|
|
||||||
from PIL import Image, ImageFile, ImagePalette, ImageChops, ImageSequence, _binary
|
from PIL import Image, ImageFile, ImagePalette, \
|
||||||
|
ImageChops, ImageSequence, _binary
|
||||||
|
|
||||||
__version__ = "0.9"
|
__version__ = "0.9"
|
||||||
|
|
||||||
|
@ -317,6 +318,7 @@ def _save_all(im, fp, filename):
|
||||||
|
|
||||||
def _save(im, fp, filename, save_all=False):
|
def _save(im, fp, filename, save_all=False):
|
||||||
|
|
||||||
|
im.encoderinfo.update(im.info)
|
||||||
if _imaging_gif:
|
if _imaging_gif:
|
||||||
# call external driver
|
# call external driver
|
||||||
try:
|
try:
|
||||||
|
@ -347,7 +349,8 @@ def _save(im, fp, filename, save_all=False):
|
||||||
# e.g. getdata(im_frame, duration=1000)
|
# e.g. getdata(im_frame, duration=1000)
|
||||||
if not previous:
|
if not previous:
|
||||||
# global header
|
# global header
|
||||||
for s in getheader(im_frame, palette, im.encoderinfo)[0] + getdata(im_frame):
|
for s in getheader(im_frame, palette, im.encoderinfo)[0] + \
|
||||||
|
getdata(im_frame, (0, 0), **im.encoderinfo):
|
||||||
fp.write(s)
|
fp.write(s)
|
||||||
else:
|
else:
|
||||||
# delta frame
|
# delta frame
|
||||||
|
@ -356,7 +359,8 @@ def _save(im, fp, filename, save_all=False):
|
||||||
|
|
||||||
if bbox:
|
if bbox:
|
||||||
# compress difference
|
# compress difference
|
||||||
for s in getdata(im_frame.crop(bbox), offset=bbox[:2]):
|
for s in getdata(im_frame.crop(bbox),
|
||||||
|
bbox[:2], **im.encoderinfo):
|
||||||
fp.write(s)
|
fp.write(s)
|
||||||
else:
|
else:
|
||||||
# FIXME: what should we do in this case?
|
# FIXME: what should we do in this case?
|
||||||
|
@ -591,7 +595,16 @@ def getheader(im, palette=None, info=None):
|
||||||
# size of global color table + global color table flag
|
# size of global color table + global color table flag
|
||||||
header.append(o8(color_table_size + 128))
|
header.append(o8(color_table_size + 128))
|
||||||
# background + reserved/aspect
|
# background + reserved/aspect
|
||||||
background = im.info["background"] if "background" in im.info else 0
|
if info and "background" in info:
|
||||||
|
background = info["background"]
|
||||||
|
elif "background" in im.info:
|
||||||
|
# This elif is redundant within GifImagePlugin
|
||||||
|
# since im.info parameters are bundled into the info dictionary
|
||||||
|
# However, external scripts may call getheader directly
|
||||||
|
# So this maintains earlier behaviour
|
||||||
|
background = im.info["background"]
|
||||||
|
else:
|
||||||
|
background = 0
|
||||||
header.append(o8(background) + o8(0))
|
header.append(o8(background) + o8(0))
|
||||||
# end of Logical Screen Descriptor
|
# end of Logical Screen Descriptor
|
||||||
|
|
||||||
|
|
|
@ -96,7 +96,7 @@ class TestFileGif(PillowTestCase):
|
||||||
self.assertEqual(reread.n_frames, 5)
|
self.assertEqual(reread.n_frames, 5)
|
||||||
|
|
||||||
def test_headers_saving_for_animated_gifs(self):
|
def test_headers_saving_for_animated_gifs(self):
|
||||||
important_headers = ['background', 'version', 'transparency', 'duration', 'loop']
|
important_headers = ['background', 'version', 'duration', 'loop']
|
||||||
# Multiframe image
|
# Multiframe image
|
||||||
im = Image.open("Tests/images/dispose_bgnd.gif")
|
im = Image.open("Tests/images/dispose_bgnd.gif")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user