mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-10-30 23:47:27 +03:00 
			
		
		
		
	Allow alpha differences to indicate different frames when saving GIF
This commit is contained in:
		
							parent
							
								
									119a0dfb01
								
							
						
					
					
						commit
						541d2605b9
					
				|  | @ -1130,6 +1130,18 @@ def test_bbox(tmp_path): | ||||||
|         assert reread.n_frames == 2 |         assert reread.n_frames == 2 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | def test_bbox_alpha(tmp_path): | ||||||
|  |     out = str(tmp_path / "temp.gif") | ||||||
|  | 
 | ||||||
|  |     im = Image.new("RGBA", (1, 2), (255, 0, 0, 255)) | ||||||
|  |     im.putpixel((0, 1), (255, 0, 0, 0)) | ||||||
|  |     im2 = Image.new("RGBA", (1, 2), (255, 0, 0, 0)) | ||||||
|  |     im.save(out, save_all=True, append_images=[im2]) | ||||||
|  | 
 | ||||||
|  |     with Image.open(out) as reread: | ||||||
|  |         assert reread.n_frames == 2 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| def test_palette_save_L(tmp_path): | def test_palette_save_L(tmp_path): | ||||||
|     # Generate an L mode image with a separate palette |     # Generate an L mode image with a separate palette | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -569,9 +569,9 @@ def _getbbox(base_im, im_frame): | ||||||
|         delta = ImageChops.subtract_modulo(im_frame, base_im) |         delta = ImageChops.subtract_modulo(im_frame, base_im) | ||||||
|     else: |     else: | ||||||
|         delta = ImageChops.subtract_modulo( |         delta = ImageChops.subtract_modulo( | ||||||
|             im_frame.convert("RGB"), base_im.convert("RGB") |             im_frame.convert("RGBA"), base_im.convert("RGBA") | ||||||
|         ) |         ) | ||||||
|     return delta.getbbox() |     return delta.getbbox(alpha_only=False) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def _write_multiple_frames(im, fp, palette): | def _write_multiple_frames(im, fp, palette): | ||||||
|  |  | ||||||
|  | @ -1140,7 +1140,7 @@ def _write_multiple_frames(im, fp, chunk, rawmode, default_image, append_images) | ||||||
|                 delta = ImageChops.subtract_modulo( |                 delta = ImageChops.subtract_modulo( | ||||||
|                     im_frame.convert("RGBA"), base_im.convert("RGBA") |                     im_frame.convert("RGBA"), base_im.convert("RGBA") | ||||||
|                 ) |                 ) | ||||||
|                 bbox = delta.im.getbbox(False) |                 bbox = delta.getbbox(alpha_only=False) | ||||||
|                 if ( |                 if ( | ||||||
|                     not bbox |                     not bbox | ||||||
|                     and prev_disposal == encoderinfo.get("disposal") |                     and prev_disposal == encoderinfo.get("disposal") | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user