2016-03-07 48 views
0

我正在尋找一種將屏幕捕獲以高效的方式轉換爲char *的方法。 我想過使用位圖對象捕獲屏幕,然後將位圖對象轉換爲字節數組,然後轉換爲char *,但我找不到任何方法將位圖轉換爲字節數組。 我也想過在屏幕捕獲中迭代每個像素並將RGB值保存在一個數組中,但是這會創建一個對我來說太大的數組。在C++中發送屏幕捕獲流

最終目標是以最快的方式返回一個char *對象,該對象不會返回太大的對象,並且該char *包含捕獲屏幕的數據。

+1

如何只'的reinterpret_cast (pointer_to_raw_screenshot_data)'? –

+2

「...我找不到任何方法將位圖轉換爲字節數組」 - 您應該搜索一下更難,因爲這幾乎都是位圖。 – WhozCraig

回答

0

你沒有給出足夠的信息/代碼來理解你真正想要達到的目標。例如。你打算如何表示顏色系數?總之,很長的路要走是使用OpenCV庫,例如:

cv::Mat mat = cv::imread("PATH/TO/YOUR/FILE.bmp"); 

    char table[mat.rows * mat.cols * 3]; // assuming that we have 3 colour channels 
    unsigned int index = 0; 

    cv::MatIterator_<uchar> it, end; 
    for(it = mat.begin<uchar>(), end = mat.end<uchar>(); it != end; ++it) 
    table[index++] = *it;