mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-11-10 19:56:47 +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)
|
||||
|
||||
|
||||
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:
|
||||
with pytest.warns(DeprecationWarning):
|
||||
assert ImageCms.DESCRIPTION.strip().startswith("pyCMS")
|
||||
|
|
|
@ -1127,17 +1127,23 @@ class Image:
|
|||
return new_im
|
||||
|
||||
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"):
|
||||
from . import ImageCms
|
||||
|
||||
srgb = ImageCms.createProfile("sRGB")
|
||||
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(
|
||||
profiles[0], profiles[1], self.mode, mode
|
||||
profiles[0], profiles[1], im.mode, mode
|
||||
)
|
||||
return transform.apply(self)
|
||||
return transform.apply(im)
|
||||
|
||||
# colorspace conversion
|
||||
if dither is None:
|
||||
|
|
Loading…
Reference in New Issue
Block a user