def filter(image, rgb): filtered_image = Image.new("RGB", (image.width, image.height)) for y in range(image.height): for x in range(image.width): pixel = colourx.rgb_to_hcl(image.getpixel((x,y))) new_hue = colourx.rgb_to_hcl(rgb)[0] new_color = (new_hue, pixel[1], pixel[2]) filtered_image.putpixel((x,y), colourx.hcl_to_rgb(new_color)) return filtered_image
def dynamic_filter(image, rgb, colour_clamp=False): filtered_image = Image.new("RGB", (image.width, image.height)) for y in range(image.height): for x in range(image.width): opixel = image.getpixel((x,y)) pixel = colourx.rgb_to_hcl(image.getpixel((x,y))) new_hue = colourx.rgb_to_hcl(rgb)[0] new_color = colourx.hcl_to_rgb((new_hue, pixel[1], pixel[2])) opacity = math.sqrt(255**2-opixel[1]**2)/255.0 new_color = colourx.blend_colour( opixel, new_color, opacity) filtered_image.putpixel((x,y), new_color) return filtered_image
def image_hcl(Image): r = g = b = 0.0 numpix = Image.width * Image.height for y in range(Image.height): for x in range(Image.width): pixel = Image.getpixel((x,y)) r += pixel[0] g += pixel[1] b += pixel[2] avg_rgb = (r/numpix, g/numpix, b/numpix) return colourx.rgb_to_hcl(avg_rgb)