Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在linux中使用x-window库使图像变暗_C_Linux_Ubuntu_Xlib_Imaging - Fatal编程技术网

C 如何在linux中使用x-window库使图像变暗

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

我将在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 = 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位模式吗?