mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-10-31 16:07:30 +03:00 
			
		
		
		
	Allow alpha_composite to use LA images (#9066)
This commit is contained in:
		
						commit
						9a2c5160f2
					
				|  | @ -388,6 +388,37 @@ class TestImage: | |||
|         assert img_colors is not None | ||||
|         assert sorted(img_colors) == expected_colors | ||||
| 
 | ||||
|     def test_alpha_composite_la(self) -> None: | ||||
|         # Arrange | ||||
|         expected_colors = sorted( | ||||
|             [ | ||||
|                 (3300, (255, 255)), | ||||
|                 (1156, (170, 192)), | ||||
|                 (1122, (128, 255)), | ||||
|                 (1089, (0, 0)), | ||||
|                 (1122, (255, 128)), | ||||
|                 (1122, (0, 128)), | ||||
|                 (1089, (0, 255)), | ||||
|             ] | ||||
|         ) | ||||
| 
 | ||||
|         dst = Image.new("LA", size=(100, 100), color=(0, 255)) | ||||
|         draw = ImageDraw.Draw(dst) | ||||
|         draw.rectangle((0, 33, 100, 66), fill=(0, 128)) | ||||
|         draw.rectangle((0, 67, 100, 100), fill=(0, 0)) | ||||
|         src = Image.new("LA", size=(100, 100), color=(255, 255)) | ||||
|         draw = ImageDraw.Draw(src) | ||||
|         draw.rectangle((33, 0, 66, 100), fill=(255, 128)) | ||||
|         draw.rectangle((67, 0, 100, 100), fill=(255, 0)) | ||||
| 
 | ||||
|         # Act | ||||
|         img = Image.alpha_composite(dst, src) | ||||
| 
 | ||||
|         # Assert | ||||
|         img_colors = img.getcolors() | ||||
|         assert img_colors is not None | ||||
|         assert sorted(img_colors) == expected_colors | ||||
| 
 | ||||
|     def test_alpha_inplace(self) -> None: | ||||
|         src = Image.new("RGBA", (128, 128), "blue") | ||||
| 
 | ||||
|  |  | |||
|  | @ -3570,9 +3570,8 @@ def alpha_composite(im1: Image, im2: Image) -> Image: | |||
|     """ | ||||
|     Alpha composite im2 over im1. | ||||
| 
 | ||||
|     :param im1: The first image. Must have mode RGBA. | ||||
|     :param im2: The second image.  Must have mode RGBA, and the same size as | ||||
|        the first image. | ||||
|     :param im1: The first image. Must have mode RGBA or LA. | ||||
|     :param im2: The second image. Must have the same mode and size as the first image. | ||||
|     :returns: An :py:class:`~PIL.Image.Image` object. | ||||
|     """ | ||||
| 
 | ||||
|  |  | |||
|  | @ -25,13 +25,12 @@ ImagingAlphaComposite(Imaging imDst, Imaging imSrc) { | |||
|     int x, y; | ||||
| 
 | ||||
|     /* Check arguments */ | ||||
|     if (!imDst || !imSrc || strcmp(imDst->mode, "RGBA") || | ||||
|         imDst->type != IMAGING_TYPE_UINT8 || imDst->bands != 4) { | ||||
|     if (!imDst || !imSrc || | ||||
|         (strcmp(imDst->mode, "RGBA") && strcmp(imDst->mode, "LA"))) { | ||||
|         return ImagingError_ModeError(); | ||||
|     } | ||||
| 
 | ||||
|     if (strcmp(imDst->mode, imSrc->mode) || imDst->type != imSrc->type || | ||||
|         imDst->bands != imSrc->bands || imDst->xsize != imSrc->xsize || | ||||
|     if (strcmp(imDst->mode, imSrc->mode) || imDst->xsize != imSrc->xsize || | ||||
|         imDst->ysize != imSrc->ysize) { | ||||
|         return ImagingError_Mismatch(); | ||||
|     } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user