C 如何在linux中使用x-window库使图像变暗
我将在Ubuntu中使用x库使图像变暗。这是我的密码C 如何在linux中使用x-window库使图像变暗,c,linux,ubuntu,xlib,imaging,C,Linux,Ubuntu,Xlib,Imaging,我将在Ubuntu中使用x库使图像变暗。这是我的密码 XImage* getCorrectedImage(Pixmap p){ int buflen, i; XImage* img = XGetImage(g_display, p, 0, 0, g_width, g_height, AllPlanes, ZPixmap); buflen = img->width * img->height * img->bitmap_pad / 8; for(i
XImage* getCorrectedImage(Pixmap p){
int buflen, i;
XImage* img = XGetImage(g_display, p, 0, 0, g_width, g_height, AllPlanes, ZPixmap);
buflen = img->width * img->height * img->bitmap_pad / 8;
for(i = 0; i < buflen; i++){
img->data[i] /= 2;
}
}
XImage*getCorrectedImage(Pixmap p){
内布弗伦,i;
XImage*img=XGetImage(g_显示,p,0,0,g_宽度,g_高度,所有平面,ZPixmap);
buflen=img->width*img->height*img->bitmap\u pad/8;
对于(i=0;idata[i]/=2;
}
}
结果图像如下所示:
这是颜色模式的问题。它不是24位颜色模式
您必须使用16位颜色模式,这是颜色模式的问题。它不是24位颜色模式
您必须使用16位颜色模式我想知道除了要更改的RGB值之外,您是否还要更改gamma值。img->data包含多于RGB三元组的数据,很可能包含4个字节,也可能包含alpha值。尝试使用XGetPixel()/XSetPixel()来更改值。对于Ubuntu机器来说,这是一个有趣的图像选择。我不科学的猜测是,你试图操纵一个理想的彩色8位像素地图。顺便说一句,bitmap_pad不是每个像素的字节数。我想知道除了要更改的RGB值之外,您是否还要更改gamma值。img->data包含多于RGB三元组的数据,很可能包含4个字节,也可能包含alpha值。尝试使用XGetPixel()/XSetPixel()来更改值。对于Ubuntu机器来说,这是一个有趣的图像选择。我不科学的猜测是,你试图操纵一个理想的彩色8位像素地图。顺便说一句,bitmap_pad不是每个像素的字节数。这很有趣。你是说24位模式吗?那很有趣。你是说24位模式吗?