mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-24 00:46:16 +03:00
Merge pull request #6647 from radarhere/rgb2lab
This commit is contained in:
commit
bb2016794f
|
@ -248,6 +248,17 @@ def test_p2pa_palette():
|
|||
assert im_pa.getpalette() == im.getpalette()
|
||||
|
||||
|
||||
@pytest.mark.parametrize("mode", ("RGB", "RGBA", "RGBX"))
|
||||
def test_rgb_lab(mode):
|
||||
im = Image.new(mode, (1, 1))
|
||||
converted_im = im.convert("LAB")
|
||||
assert converted_im.getpixel((0, 0)) == (0, 128, 128)
|
||||
|
||||
im = Image.new("LAB", (1, 1), (255, 0, 0))
|
||||
converted_im = im.convert(mode)
|
||||
assert converted_im.getpixel((0, 0))[:3] == (0, 255, 255)
|
||||
|
||||
|
||||
def test_matrix_illegal_conversion():
|
||||
# Arrange
|
||||
im = hopper("CMYK")
|
||||
|
|
|
@ -1042,6 +1042,19 @@ class Image:
|
|||
warnings.warn("Couldn't allocate palette entry for transparency")
|
||||
return new
|
||||
|
||||
if "LAB" in (self.mode, mode):
|
||||
other_mode = mode if self.mode == "LAB" else self.mode
|
||||
if other_mode in ("RGB", "RGBA", "RGBX"):
|
||||
from . import ImageCms
|
||||
|
||||
srgb = ImageCms.createProfile("sRGB")
|
||||
lab = ImageCms.createProfile("LAB")
|
||||
profiles = [lab, srgb] if self.mode == "LAB" else [srgb, lab]
|
||||
transform = ImageCms.buildTransform(
|
||||
profiles[0], profiles[1], self.mode, mode
|
||||
)
|
||||
return transform.apply(self)
|
||||
|
||||
# colorspace conversion
|
||||
if dither is None:
|
||||
dither = Dither.FLOYDSTEINBERG
|
||||
|
|
Loading…
Reference in New Issue
Block a user