2010-10-29 99 views
2


我正在嘗試創建將捕獲桌面視頻(幀)的JNI C++庫。 第一步是簡單地製作桌面的屏幕截圖。代碼是:如何將XImage保存爲位圖?

#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--它不能使用第三方庫。 (據我所知)。
請幫忙。
謝謝。

回答

2

要做到這一點,你必須爲所有可能的XImage格式編寫一個轉換例程,或者至少可以爲用戶可能擁有的所有格式。在開羅

見_get_image_surface()例如:

如果您不能使用第三方庫,你將不得不重新實現類似的東西。 請注意,它是鏈接到一些格式的libpixman,所以代碼比它看起來更復雜。