From c117dcae347a105578c75de1dbc04d24f5db0fba Mon Sep 17 00:00:00 2001 From: Yoav Weiss Date: Tue, 30 Jul 2013 16:43:40 +0200 Subject: [PATCH] Add RGBA support to ImageColor --- PIL/ImageColor.py | 13 ++++++++++--- Tests/test_imagecolor.py | 3 +++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/PIL/ImageColor.py b/PIL/ImageColor.py index 39ddafbbe..2a190fc66 100644 --- a/PIL/ImageColor.py +++ b/PIL/ImageColor.py @@ -30,7 +30,6 @@ import re # as an RGB value. def getrgb(color): - # FIXME: add RGBA support try: rgb = colormap[color] except KeyError: @@ -87,6 +86,14 @@ def getrgb(color): int(rgb[1] * 255 + 0.5), int(rgb[2] * 255 + 0.5) ) + m = re.match("rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$", color) + if m: + return ( + int(m.group(1)), + int(m.group(2)), + int(m.group(3)), + int(m.group(4)) + ) raise ValueError("unknown color specifier: %r" % color) def getcolor(color, mode): @@ -95,8 +102,8 @@ def getcolor(color, mode): if mode == "RGB": return color if mode == "RGBA": - r, g, b = color - return r, g, b, 255 + r, g, b, a = color + return r, g, b, a if Image.getmodebase(mode) == "L": r, g, b = color return (r*299 + g*587 + b*114)//1000 diff --git a/Tests/test_imagecolor.py b/Tests/test_imagecolor.py index 534005fe4..9b1ea9b6b 100644 --- a/Tests/test_imagecolor.py +++ b/Tests/test_imagecolor.py @@ -9,8 +9,11 @@ from PIL import ImageColor assert_equal((255, 0, 0), ImageColor.getrgb("#f00")) assert_equal((255, 0, 0), ImageColor.getrgb("#ff0000")) assert_equal((255, 0, 0), ImageColor.getrgb("rgb(255,0,0)")) +assert_equal((255, 0, 0, 0), ImageColor.getrgb("rgb(255, 0, 0)")) assert_equal((255, 0, 0), ImageColor.getrgb("rgb(100%,0%,0%)")) assert_equal((255, 0, 0), ImageColor.getrgb("hsl(0, 100%, 50%)")) +assert_equal((255, 0, 0, 0), ImageColor.getrgb("rgba(255,0,0,0)")) +assert_equal((255, 0, 0, 0), ImageColor.getrgb("rgba(255, 0, 0, 0)")) assert_equal((255, 0, 0), ImageColor.getrgb("red")) # --------------------------------------------------------------------