2


デスクトップ ビデオ (フレーム) をキャプチャする JNI C++ ライブラリを作成しようとしています。最初のステップは、デスクトップのスクリーンショットを作成することです。コードは次のとおりです。

#include <iostream>
#include <X11/Xlib.h>

using namespace std;

int main()
{
        Display *display;
        int screen;
        Window root;
        display = XOpenDisplay(0);
        screen = DefaultScreen(display);
        root = RootWindow(display, screen);
        XImage *img = XGetImage(display,root,0,0,400,400,XAllPlanes(),ZPixmap);

        if (img != NULL)
        {
           //save image here
        }
        return 0;
}

しかし、imgをビットマップファイルとして保存する方法は? ターゲット ライブラリは JNI であるため、サードパーティ ライブラリを使用してはなりません。(私が理解したように)。
助けてください。
ありがとうございました。

4

1 に答える 1

3

これを行うには、考えられるすべての XImage 形式、または少なくともユーザーが使用する可能性のあるすべての形式の変換ルーチンを作成する必要があります。

たとえば、cairo の _get_image_surface() を参照してください。

サードパーティのライブラリを使用できない場合は、そのようなものを再実装する必要があります。一部の形式では libpixman に連鎖しているため、コードはそこに表示されるよりもさらに複雑であることに注意してください。

于 2010-10-29T14:46:54.437 に答える