Forum Programmation.c XLib: XGetImage sur une Window

Posté par .
Tags : aucun
1
31
août
2012

Bonjour,

J'essaie de capturer l'image d'une fenêtre X11 (une sorte de screenshot dans le code).
J'ai bien récupéré le Display et l'identifiant de la Window.
J'arrive également à récupérer les infos (notamment width et height), mais j'ai une erreur BadValue lors du XGetImage.

Voici l'extrait de code concerné:

XWindowAttributes winAttr;
XGetWindowAttributes(_display, _window, &winAttr);
XImage * image = XGetImage(_display, _window, 0,0, winAttr.width,winAttr.height, 0x00FFFFFF, XYBitmap);

et le message retourné lors de l’exécution:

X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 73 (X_GetImage)
Value in failed request: 0x0
Serial number of failed request: 9
Current serial number in output stream: 9

Je ne vois pas d'où ça peut venir.
Si l'un d'entre vous a une idée, ça m'aiderait beaucoup.

Merci d'avance

  • # XYPixmap

    Posté par . Évalué à 6.

    Hello,

    et le message retourné lors de l’exécution:

    X Error of failed request: BadValue (integer parameter out of range for operation)
    Major opcode of failed request: 73 (X_GetImage)
    Value in failed request: 0x0
    Serial number of failed request: 9
    Current serial number in output stream: 9

    Et, dans la man page :

      BadValue  Some numeric value falls outside the range of values accepted by the request.
                Unless a specific range is specified for an argument, the full range defined by the
                argument's type is accepted.  Any argument defined as a set of alternatives can generate this error.
    

    Dans ton code, on voit :

    XImage * image = XGetImage(_display, _window, 0,0, winAttr.width,winAttr.height, 0x00FFFFFF, XYBitmap);
    
    

    et la man page précise :

       format    Specifies the format for the image.  You can pass XYPixmap or ZPixmap.
    
    

    Essaie donc de remplacer XYBitmap par XYPixmap.

    • [^] # Re: XYPixmap

      Posté par . Évalué à 2.

      Merci c'était bien ça !

      C'est ça qui m'a induit en erreur (dans X11/Xlib.h) :

      typedef struct _XImage {
      // …
      int format; /* XYBitmap, XYPixmap, ZPixmap */
      // …
      } XImage;
      ```

      Mais effictevement le man ne parle que de XYPixmap et ZPixmap.

      Encore merci

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.