2016-12-30 1 views
1

Je vais assombrir l'image en utilisant x lib dans Ubuntu. Voici mon code.Comment assombrir l'image en utilisant x-window lib dans linux

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; 
    } 
} 

Et l'image résultat est comme ceci:

Image

+0

Je me demande si vous modifiez une valeur gamma en plus des valeurs RVB que vous attendez de modifier. img-> data contient plus que le triplet RGB, plus que probablement il contient 4 octets, éventuellement aussi la valeur alpha. Essayez d'utiliser XGetPixel()/XSetPixel() pour modifier les valeurs. – Bert

+0

C'est un choix intéressant d'image pour une machine Ubuntu. Ma conjecture non-scientifique est que vous essayez de manipuler un Pixmap 8-bit couleur. BTW bitmap_pad n'est pas le nombre d'octets par pixel. –

Répondre

0

Il est le problème en mode couleur. il n'est pas en mode couleur 24bit vous devez utiliser le mode couleur 16 bits

+0

C'est intéressant. voulez-vous dire le mode 24 bits? –