mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-02-03 21:24:31 +03:00
Support converting more modes to LAB by converting to RGBA first
This commit is contained in:
parent
6377321625
commit
de3c6fa295
|
@ -696,6 +696,12 @@ def test_rgb_lab(mode: str) -> None:
|
||||||
assert value[:3] == (0, 255, 255)
|
assert value[:3] == (0, 255, 255)
|
||||||
|
|
||||||
|
|
||||||
|
def test_cmyk_lab() -> None:
|
||||||
|
im = Image.new("CMYK", (1, 1))
|
||||||
|
converted_im = im.convert("LAB")
|
||||||
|
assert converted_im.getpixel((0, 0)) == (255, 128, 128)
|
||||||
|
|
||||||
|
|
||||||
def test_deprecation() -> None:
|
def test_deprecation() -> None:
|
||||||
with pytest.warns(DeprecationWarning):
|
with pytest.warns(DeprecationWarning):
|
||||||
assert ImageCms.DESCRIPTION.strip().startswith("pyCMS")
|
assert ImageCms.DESCRIPTION.strip().startswith("pyCMS")
|
||||||
|
|
|
@ -1127,17 +1127,23 @@ class Image:
|
||||||
return new_im
|
return new_im
|
||||||
|
|
||||||
if "LAB" in (self.mode, mode):
|
if "LAB" in (self.mode, mode):
|
||||||
other_mode = mode if self.mode == "LAB" else self.mode
|
im = self
|
||||||
|
if mode == "LAB":
|
||||||
|
if im.mode not in ("RGB", "RGBA", "RGBX"):
|
||||||
|
im = im.convert("RGBA")
|
||||||
|
other_mode = im.mode
|
||||||
|
else:
|
||||||
|
other_mode = mode
|
||||||
if other_mode in ("RGB", "RGBA", "RGBX"):
|
if other_mode in ("RGB", "RGBA", "RGBX"):
|
||||||
from . import ImageCms
|
from . import ImageCms
|
||||||
|
|
||||||
srgb = ImageCms.createProfile("sRGB")
|
srgb = ImageCms.createProfile("sRGB")
|
||||||
lab = ImageCms.createProfile("LAB")
|
lab = ImageCms.createProfile("LAB")
|
||||||
profiles = [lab, srgb] if self.mode == "LAB" else [srgb, lab]
|
profiles = [lab, srgb] if im.mode == "LAB" else [srgb, lab]
|
||||||
transform = ImageCms.buildTransform(
|
transform = ImageCms.buildTransform(
|
||||||
profiles[0], profiles[1], self.mode, mode
|
profiles[0], profiles[1], im.mode, mode
|
||||||
)
|
)
|
||||||
return transform.apply(self)
|
return transform.apply(im)
|
||||||
|
|
||||||
# colorspace conversion
|
# colorspace conversion
|
||||||
if dither is None:
|
if dither is None:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user