在LinuxXorg上设置颜色亮度

在LinuxXorg上设置颜色亮度,第1张

概述是否有任何命令(或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;}

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

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

总结

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1032179.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存