mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-10-30 23:47:27 +03:00 
			
		
		
		
	Merge pull request #6377 from btrekkie/fix-round-to-palette
Fixed bug with rounding pixels to palette
This commit is contained in:
		
						commit
						6dd5b2e8c9
					
				
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB | 
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB | 
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB | 
|  | @ -9,7 +9,7 @@ def test_entropy(): | |||
|     assert round(abs(entropy("L") - 7.063008716585465), 7) == 0 | ||||
|     assert round(abs(entropy("I") - 7.063008716585465), 7) == 0 | ||||
|     assert round(abs(entropy("F") - 7.063008716585465), 7) == 0 | ||||
|     assert round(abs(entropy("P") - 5.0530452472519745), 7) == 0 | ||||
|     assert round(abs(entropy("P") - 5.082506854662517), 7) == 0 | ||||
|     assert round(abs(entropy("RGB") - 8.821286587714319), 7) == 0 | ||||
|     assert round(abs(entropy("RGBA") - 7.42724306524488), 7) == 0 | ||||
|     assert round(abs(entropy("CMYK") - 7.4272430652448795), 7) == 0 | ||||
|  |  | |||
|  | @ -16,7 +16,7 @@ def test_getcolors(): | |||
|     assert getcolors("L") == 255 | ||||
|     assert getcolors("I") == 255 | ||||
|     assert getcolors("F") == 255 | ||||
|     assert getcolors("P") == 90  # fixed palette | ||||
|     assert getcolors("P") == 96  # fixed palette | ||||
|     assert getcolors("RGB") is None | ||||
|     assert getcolors("RGBA") is None | ||||
|     assert getcolors("CMYK") is None | ||||
|  |  | |||
|  | @ -10,7 +10,7 @@ def test_histogram(): | |||
|     assert histogram("L") == (256, 0, 662) | ||||
|     assert histogram("I") == (256, 0, 662) | ||||
|     assert histogram("F") == (256, 0, 662) | ||||
|     assert histogram("P") == (256, 0, 1871) | ||||
|     assert histogram("P") == (256, 0, 1551) | ||||
|     assert histogram("RGB") == (768, 4, 675) | ||||
|     assert histogram("RGBA") == (1024, 0, 16384) | ||||
|     assert histogram("CMYK") == (1024, 0, 16384) | ||||
|  |  | |||
|  | @ -65,6 +65,22 @@ def test_quantize_no_dither(): | |||
|     assert converted.palette.palette == palette.palette.palette | ||||
| 
 | ||||
| 
 | ||||
| def test_quantize_no_dither2(): | ||||
|     im = Image.new("RGB", (9, 1)) | ||||
|     im.putdata(list((p,) * 3 for p in range(0, 36, 4))) | ||||
| 
 | ||||
|     palette = Image.new("P", (1, 1)) | ||||
|     data = (0, 0, 0, 32, 32, 32) | ||||
|     palette.putpalette(data) | ||||
|     quantized = im.quantize(dither=Image.Dither.NONE, palette=palette) | ||||
| 
 | ||||
|     assert tuple(quantized.palette.palette) == data | ||||
| 
 | ||||
|     px = quantized.load() | ||||
|     for x in range(9): | ||||
|         assert px[x, 0] == (0 if x < 5 else 1) | ||||
| 
 | ||||
| 
 | ||||
| def test_quantize_dither_diff(): | ||||
|     image = hopper() | ||||
|     with Image.open("Tests/images/caption_6_33_22.png") as palette: | ||||
|  |  | |||
|  | @ -200,15 +200,15 @@ ImagingPaletteCacheUpdate(ImagingPalette palette, int r, int g, int b) { | |||
| 
 | ||||
|         /* Find min and max distances to any point in the box */ | ||||
|         r = palette->palette[i * 4 + 0]; | ||||
|         tmin = (r < r0) ? RDIST(r, r1) : (r > r1) ? RDIST(r, r0) : 0; | ||||
|         tmin = (r < r0) ? RDIST(r, r0) : (r > r1) ? RDIST(r, r1) : 0; | ||||
|         tmax = (r <= rc) ? RDIST(r, r1) : RDIST(r, r0); | ||||
| 
 | ||||
|         g = palette->palette[i * 4 + 1]; | ||||
|         tmin += (g < g0) ? GDIST(g, g1) : (g > g1) ? GDIST(g, g0) : 0; | ||||
|         tmin += (g < g0) ? GDIST(g, g0) : (g > g1) ? GDIST(g, g1) : 0; | ||||
|         tmax += (g <= gc) ? GDIST(g, g1) : GDIST(g, g0); | ||||
| 
 | ||||
|         b = palette->palette[i * 4 + 2]; | ||||
|         tmin += (b < b0) ? BDIST(b, b1) : (b > b1) ? BDIST(b, b0) : 0; | ||||
|         tmin += (b < b0) ? BDIST(b, b0) : (b > b1) ? BDIST(b, b1) : 0; | ||||
|         tmax += (b <= bc) ? BDIST(b, b1) : BDIST(b, b0); | ||||
| 
 | ||||
|         dmin[i] = tmin; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user