Skip to content

Commit

Permalink
Merge fac32ae into 968c2cf
Browse files Browse the repository at this point in the history
  • Loading branch information
radarhere committed Jun 16, 2018
2 parents 968c2cf + fac32ae commit 7dbdf72
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 7 deletions.
10 changes: 10 additions & 0 deletions Tests/test_file_gif.py
Expand Up @@ -490,6 +490,16 @@ def test_transparent_optimize(self):

self.assertEqual(reloaded.info['transparency'], 253)

def test_rgb_transparency(self):
out = self.tempfile('temp.gif')

im = Image.new('RGB', (1, 1))
im.info['transparency'] = (255, 0, 0)
self.assert_warning(UserWarning, im.save, out)

reloaded = Image.open(out)
self.assertNotIn('transparency', reloaded.info)

def test_bbox(self):
out = self.tempfile('temp.gif')

Expand Down
17 changes: 10 additions & 7 deletions src/PIL/GifImagePlugin.py
Expand Up @@ -372,6 +372,8 @@ def _normalize_palette(im, palette, info):

def _write_single_frame(im, fp, palette):
im_out = _normalize_mode(im, True)
for k, v in im_out.info.items():
im.encoderinfo.setdefault(k, v)
im_out = _normalize_palette(im_out, palette, im.encoderinfo)

for s in _get_global_header(im_out, im.encoderinfo):
Expand All @@ -392,15 +394,18 @@ def _write_single_frame(im, fp, palette):

def _write_multiple_frames(im, fp, palette):

duration = im.encoderinfo.get("duration", None)
disposal = im.encoderinfo.get('disposal', None)
duration = im.encoderinfo.get("duration", im.info.get("duration"))
disposal = im.encoderinfo.get("disposal", im.info.get("disposal"))

im_frames = []
frame_count = 0
for imSequence in itertools.chain([im], im.encoderinfo.get("append_images", [])):
for im_frame in ImageSequence.Iterator(imSequence):
# a copy is required here since seek can still mutate the image
im_frame = _normalize_mode(im_frame.copy())
if frame_count == 0:
for k, v in im_frame.info.items():
im.encoderinfo.setdefault(k, v)
im_frame = _normalize_palette(im_frame, palette, im.encoderinfo)

encoderinfo = im.encoderinfo.copy()
Expand Down Expand Up @@ -457,12 +462,10 @@ def _save_all(im, fp, filename):


def _save(im, fp, filename, save_all=False):
for k, v in im.info.items():
im.encoderinfo.setdefault(k, v)
# header
try:
palette = im.encoderinfo["palette"]
except KeyError:
if "palette" in im.encoderinfo or "palette" in im.info:
palette = im.encoderinfo.get("palette", im.info.get("palette"))
else:
palette = None
im.encoderinfo["optimize"] = im.encoderinfo.get("optimize", True)

Expand Down

0 comments on commit 7dbdf72

Please sign in to comment.