def enhance(pixbuf, brightness=1.0, contrast=1.0, saturation=1.0, sharpness=1.0, autocontrast=False): '''Return a modified pixbuf from <pixbuf> where the enhancement operations corresponding to each argument has been performed. A value of 1.0 means no change. If <autocontrast> is True it overrides the <contrast> value, but only if the image mode is supported by ImageOps.autocontrast (i.e. it is L or RGB.) ''' if is_animation(pixbuf): return anime_tools.frame_executor(pixbuf, enhance, kwargs=dict(brightness=brightness, contrast=contrast, saturation=saturation, sharpness=1.0, autocontrast=False)) im = pixbuf_to_pil(pixbuf) if brightness != 1.0: im = ImageEnhance.Brightness(im).enhance(brightness) if autocontrast and im.mode in ('L', 'RGB'): im = ImageOps.autocontrast(im, cutoff=0.1) elif contrast != 1.0: im = ImageEnhance.Contrast(im).enhance(contrast) if saturation != 1.0: im = ImageEnhance.Color(im).enhance(saturation) if sharpness != 1.0: im = ImageEnhance.Sharpness(im).enhance(sharpness) return pil_to_pixbuf(im)
def trans_pixbuf(src, flip=False, flop=False): if is_animation(src): return anime_tools.frame_executor(src, trans_pixbuf, kwargs=dict(flip=flip, flop=flop)) if flip: src = src.flip(horizontal=False) if flop: src = src.flip(horizontal=True) return src
def fit_pixbuf_to_rectangle(src, rect, rotation): if is_animation(src): return anime_tools.frame_executor(src, fit_pixbuf_to_rectangle, args=(rect, rotation)) return fit_in_rectangle(src, rect[0], rect[1], rotation=rotation, keep_ratio=False, scale_up=True)