Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Linux / Xorg上设置颜色亮度大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

是否有任何命令(或API)来设置X.org/ Linux颜色亮度? 换句话说,我需要像xgAMMa命令一样方便的东西,但实时改变RGB亮度. 这可能吗? 使用 XF86VidMode*系列功能. #include <X11/Xlib.h> #include <X11/extensions/xf86vmode.h> #include <math.h> #include <stdio.h> #incl
是否有任何命令(或API)来设置X.org/ Linux颜色亮度?

换句话说,我需要像xgamma命令一样方便的东西,但实时改变RGB亮度.

这可能吗?

解决方法

使用 XF86VidMode*系列功能.

#include <X11/Xlib.h>
#include <X11/extensions/xf86vmode.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main() {
    Display *display;
    int screen;
    int major,minor;
    int i;
    XF86VidModeGAMMa orig;

    display = XOpenDisplay(null);
    if (!display) return -1;
    screen = DefaultScreen(display);
    if (!XF86VidModeQueryVersion(display,&major,&minor)
            || major < 2 || major == 2 && minor < 0
            || !XF86VidModeGetGAMMa(display,screen,&orig)) {
        XCloseDisplay(display);
        return -1;
    }

    for (i = 0; i <= 32; i++) {
        XF86VidModeGAMMa gAMMa;
        gAMMa.red = exp2f(2 - fabs(i - 16) / 4);
        gAMMa.green = gAMMa.red;
        gAMMa.blue = gAMMa.red;
        if (!XF86VidModeSetGAMMa(display,&gAMMa)) break;
        printf("gAMMa: %f %f %f",gAMMa.red,gAMMa.green,gAMMa.bluE);
        if (!XF86VidModeGetGAMMa(display,&gAMMa)) break;
        printf(" -> %f %f %f\n",gAMMa.bluE);
        sleep(1);
    }
    XF86VidModeSetGAMMa(display,&orig);
    XF86VidModeGetGAMMa(display,&orig);

    XCloseDisplay(display);
    return 0;
}@H_674_31@ 
 

这将伽马从0.25增加到4.0并返回,然后恢复原始伽玛.

或者你可以反复调用system(“xgAMMa -gAMMa%f”),结果几乎相同.

大佬总结

以上是大佬教程为你收集整理的在Linux / Xorg上设置颜色亮度全部内容,希望文章能够帮你解决在Linux / Xorg上设置颜色亮度所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。