从xvfb读取像素数据

时间:2016-04-13 03:05:08

标签: c++ x11 framebuffer xvfb

所以我对xvfb有一个奇怪的问题。基本上我有一个像xvfb一样运行的应用程序:

public static void Main()
        {
            GetData();
        }
        static void GetData()
        {
            int count = 11;
            for (int i = 0; i < count; i++)
            {
                for (int j = 0; j < count * 2; j++)
                {
                    var s = ((i + j == count) || (j - i == count)) ? "*" : " ";
                    Console.Write(s);
                }
                Console.WriteLine();
            }

            Console.WriteLine("-------------------------------");
            Console.WriteLine("------------Reverse------------");
            Console.WriteLine("-------------------------------");

            for (int i = count; i >= 0; i--)
            {
                for (int j = count * 2; j >= 0; j--)
                {
                    var s = ((i + j == count) || (j - i == count)) ? "*" : " ";
                    Console.Write(s);
                }
                Console.WriteLine();
            }

            Console.ReadLine();
        }

然后我从文件中读取像素数据:

Xvfb :1 -screen 0 1920x1080x24+32 -fbdir /var/tmp &
export DISPLAY=:1
gimp &

出于某种原因,当我打印出缓冲区的前1000个元素时,它会在开始在屏幕上打印实际视觉效果之前打印出一堆随机数据。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

如上所述here,您的文件不仅仅是一个像素数组,而是xwd format

您可以在特定于平台的xwdfile.h标头中详细了解此格式,并使用例如xwud实用程序来源,了解它是如何在您之前完成的。