在Python中调整屏幕亮度/对比度?

时间:2011-06-21 06:41:52

标签: python contrast screen-brightness

我需要使用Python调整屏幕亮度/对比度。 它将是我的代码中的一个函数,它将在用户按下某个键时运行,否则脚本不会改变亮度/对比度。 我怎样才能在Python中创建它?

非常感谢

3 个答案:

答案 0 :(得分:1)

这是特定于操作系统的,如果没有特定于系统的绑定,可能无法实现。

答案 1 :(得分:1)

我发现了一个特定于Linux的配方here

对于Windows,我认为您需要找出需要在哪个dll(可能是特定于驱动程序)中调用的函数,并使用ctypes进行必要的调用。

答案 2 :(得分:-3)

我使用等式定义here

因此,要同时调整对比度和亮度,请对每个像素进行调整:

new_value = (old_value - 0.5) × contrast + 0.5 + brightness 

Bellow一个很好的功能来完成这项工作:

def brightness_contrast(image, brightness = -100, contrast = 300):
    def vect(a):
        c   = contrast
        b   = 100 * brightness
        res = ((a - 127.5) * c + 127.5) + b
        if res < 0 :
            return 0
        if res > 255:
            return 255
        return res

    transform = np.vectorize(vect)
    data = transform(fromimage(image)).astype(np.uint8)
    return toimage(data)

你可以像这样使用它:

img = Image.open("calibration/gland_89_0.jpg")
brightness_contrast(img, brightness=-20, contrast=200).show()

我认为这个功能应该更好,关于参数。实际上,没有限制,我应该更新代码以百分比形式创建参数。