mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-25 09:26: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()
|
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():
|
def test_matrix_illegal_conversion():
|
||||||
# Arrange
|
# Arrange
|
||||||
im = hopper("CMYK")
|
im = hopper("CMYK")
|
||||||
|
|
|
@ -1042,6 +1042,19 @@ class Image:
|
||||||
warnings.warn("Couldn't allocate palette entry for transparency")
|
warnings.warn("Couldn't allocate palette entry for transparency")
|
||||||
return new
|
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
|
# colorspace conversion
|
||||||
if dither is None:
|
if dither is None:
|
||||||
dither = Dither.FLOYDSTEINBERG
|
dither = Dither.FLOYDSTEINBERG
|
||||||
|
|
Loading…
Reference in New Issue
Block a user