def put_highlight(image, highlight, resample_highlight, opacity, cache=None): if cache is None: cache = {} resample_highlight = getattr(Image, resample_highlight) id = 'highlight_%s_w%d_h%d_o%d'\ % (highlight, image.size[0], image.size[1], opacity) try: highlight = cache[id] except KeyError: highlight = open_image(highlight)\ .convert('RGBA').resize(image.size, resample_highlight) if opacity < 100: #apply opacity highlight_alpha = imtools.get_alpha(highlight) opacity = (255 * opacity) / 100 highlight.putalpha(ImageMath.eval("convert((a * o) / 255, 'L')", a=highlight_alpha, o=opacity)) #store in cache cache[id] = highlight if not has_transparency(image): image = image.convert('RGBA') else: if has_transparency(image): image = image.convert('RGBA') alpha = imtools.get_alpha(image) highlight = highlight.copy() highlight_alpha = imtools.get_alpha(highlight) highlight.putalpha(ImageMath.eval("convert(min(a, b), 'L')", a=alpha, b=highlight_alpha)) overlay = highlight.convert('RGB') paste(image, overlay, mask=highlight) return image
def put_mask(image, mask, resample_mask, cache=None): if cache is None: cache = {} resample_mask = getattr(Image, resample_mask) id = mask + "_w%d_h%d" % image.size try: mask = cache[id] except KeyError: mask = cache[id] = open_image(mask).convert("L").resize(image.size, resample_mask) if not has_transparency(image): image = image.convert("RGBA") else: if has_transparency(image): image = image.convert("RGBA") alpha = imtools.get_alpha(image) mask = ImageMath.eval("convert(min(a, b), 'L')", a=alpha, b=mask) image.putalpha(mask) return image
def put_mask(image, mask, resample_mask, cache=None): if cache is None: cache = {} resample_mask = getattr(Image, resample_mask) id = mask + '_w%d_h%d' % image.size try: mask = cache[id] except KeyError: mask = cache[id] = open_image(mask).convert('L').resize( image.size, resample_mask) if not has_transparency(image): image = image.convert('RGBA') else: if has_transparency(image): image = image.convert('RGBA') alpha = imtools.get_alpha(image) mask = (ImageMath.eval("convert(min(a, b), 'L')", a=alpha, b=mask)) image.putalpha(mask) return image