Exemple #1
0
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)
Exemple #2
0
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
Exemple #3
0
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)