From 951143c93660b90ef8cb777b9501420e1369bf6d Mon Sep 17 00:00:00 2001 From: homm Date: Sat, 17 Sep 2016 12:11:06 +0300 Subject: [PATCH] #f0f0 and #ff00ff00 colors --- PIL/ImageColor.py | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/PIL/ImageColor.py b/PIL/ImageColor.py index 56c38e419..2ee3f9996 100644 --- a/PIL/ImageColor.py +++ b/PIL/ImageColor.py @@ -45,21 +45,38 @@ def getrgb(color): return rgb colormap[color] = rgb = getrgb(rgb) return rgb + # check for known string formats - m = re.match("#\w\w\w$", color) - if m: + if re.match('#[a-f0-9]{3}$', color, re.I): return ( int(color[1]*2, 16), int(color[2]*2, 16), - int(color[3]*2, 16) + int(color[3]*2, 16), ) - m = re.match("#\w\w\w\w\w\w$", color) - if m: + + if re.match('#[a-f0-9]{4}$', color, re.I): + return ( + int(color[1]*2, 16), + int(color[2]*2, 16), + int(color[3]*2, 16), + int(color[4]*2, 16), + ) + + if re.match('#[a-f0-9]{6}$', color, re.I): return ( int(color[1:3], 16), int(color[3:5], 16), - int(color[5:7], 16) + int(color[5:7], 16), ) + + if re.match('#[a-f0-9]{8}$', color, re.I): + return ( + int(color[1:3], 16), + int(color[3:5], 16), + int(color[5:7], 16), + int(color[7:9], 16), + ) + m = re.match("rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$", color) if m: return (