2016-03-07 127 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;