Articles of 屏幕截图

有效地读取XBMC呈现的屏幕内容的平均颜色

运行XBMC更改电视环境光的颜色时,我想要获得屏幕内容的平均颜色。 XBMC运行在一个带有运行Debian衍生分发的OpenGL ES 2.0硬件(树莓派)的小型HTPC上。 我想我必须从XBMC使用OpenGL绘制的屏幕帧缓冲区读取数据。 (至less,我想,并希望XBMC渲染使用OpenGL的一切。) 是否有可能读取代表整个屏幕输出的OpenGL帧缓冲区? 我需要什么来访问它? 我是否也需要一个自己的渲染上下文来访问屏幕的帧缓冲区? (我没有自己渲染任何东西到屏幕上,我只想读 )。 有效地计算平均颜色是下一个任务。 我正在考虑每行/列每8或16像素(足够,我们正在谈论1080p高清电影),然后计算CPU上的平均值。 任何更好的解决scheme的想法是受欢迎的。

Linux,如何捕捉屏幕,并模拟鼠标移动

我需要以某种方式捕获屏幕(如打印屏幕),以便可以访问像素颜色数据,进行一些图像识别,之后我需要在屏幕上生成鼠标事件,如左键单击,拖放(移动鼠标同时按下button,然后释放它)。 一旦完成,图像将被删除。 注意:我需要捕捉整个屏幕,用户可以看到的所有内容,而且我需要模拟程序窗口外的点击(如果有任何区别的话) 规格:Linux ubuntu语言:C ++ 性能不是很重要,每10秒钟就会执行一次“打印屏幕”function。 进程的持续时间可以达到24小时,所以方法需要稳定和内存泄漏免费(如usuall 🙂 我能够在Windows下与胜利GDI和一些Windows事件,但我不知道如何在Linux中做到这一点。 非常感谢

如何读取屏幕像素?

我想读取一个矩形区域,或整个屏幕像素。 就好像截图button被按下了一样。 我如何做到这一点? 编辑:工作代码: void CaptureScreen(char *filename) { int nScreenWidth = GetSystemMetrics(SM_CXSCREEN); int nScreenHeight = GetSystemMetrics(SM_CYSCREEN); HWND hDesktopWnd = GetDesktopWindow(); HDC hDesktopDC = GetDC(hDesktopWnd); HDC hCaptureDC = CreateCompatibleDC(hDesktopDC); HBITMAP hCaptureBitmap = CreateCompatibleBitmap(hDesktopDC, nScreenWidth, nScreenHeight); SelectObject(hCaptureDC, hCaptureBitmap); BitBlt(hCaptureDC, 0, 0, nScreenWidth, nScreenHeight, hDesktopDC, 0,0, SRCCOPY|CAPTUREBLT); BITMAPINFO bmi = {0}; bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader); bmi.bmiHeader.biWidth = nScreenWidth; bmi.bmiHeader.biHeight […]

没有活动窗口的屏幕截图

我试图写一个使用WinForm或WPF窗口的放大镜应用程序。 这个想法是拖动窗口在屏幕上的一个点,并放大它。 我知道它存在商业,但需要build立一个定制的版本。 我遇到的挑战是捕获活动应用程序后面的屏幕图像。 我已经find代码来捕获下面的屏幕图像。 但它包括活动窗口 { Rectangle bounds = new Rectangle(this.Location, this.Size); Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height); Graphics g = Graphics.FromImage(bitmap); g.CopyFromScreen(this.Location, Point.Empty, bounds.Size); Bitmap bp2 = new Bitmap(bitmap); // local copy of image… pictureBox1.Image = bp2; } 添加语句来隐藏活动的应用程序可以更正图像捕捉,但会引入一个我想避免的画面闪烁。 (修改后的代码) { this.StartPosition = FormStartPosition.Manual; // get current window location Point cur = this.Location; […]

自动截取程序窗口的截图

我正在寻找一种结合了macros观录制和截图function的软件。 我们有一个软件手册与一些截图。 当新版本的软件发布时,我们需要更新大部分屏幕截图,我们必须手动完成。 现在我们开始翻译手册到几种语言,截图的数量增加了十倍。 我们想自动化这个过程。 将有一个录制的macros或点击我们的软件内的button,并采取程序窗口的屏幕截图。 更好的是,虽然不重要,但我们可以单独指定每个屏幕截图的名称。 这样的事情存在吗?

如何屏幕捕捉,除了一些窗口

情况 :我有一个通过互联网进行屏幕共享的软件,其中一个用户充当演讲者,其他用户充当观众/参与者。 除演示窗外,演讲者还有一组屏幕上出现的非共享窗口(用于开始共享/停止共享等的button栏,Skype窗口等)。 演示者可以从屏幕共享软件的设置中进行configuration,使这些非共享窗口不可见(即,它们不会出现在正在发送给与会者的屏幕共享中,但它们后面的窗口内容将显示在屏幕截图中)。 屏幕截图以大约每秒10帧或更快的速度发送。 问题 :如何以编程方式捕获屏幕,除了这些非共享-Windows窗口? 备注 : 由于较高的帧每秒值,我不能最小化/最大化/设置这些窗口的alpha,因为那么窗口将闪烁。 该应用程序是用Win32 C ++编写的。 我会使用分层的窗口,但由于Windows 7桌面组合function,这是不可用的现成的(在Windows 8中,您不能使用DwmEnableComposition暂时和编程方式禁用组成) 我可以对Windows XP / 2000/7等使用分层窗口方法,对Windows 8使用不同的方法(如果有的话),尽pipe我更喜欢一个适用于所有系统的单个进程 我还可以尝试通过捕获单个图像(桌面,需要捕获的窗口)和使用它们的z-index来创build最终图像来“撰写”屏幕截图,但是由于所需的每秒帧数,这个过程会太慢。

获取障碍窗口的图像内容

是否有可能获得一个障碍窗口的图像内容而不把它带到前面? 另外,是否可以使用Windows API将鼠标点击发送到此类窗口的特定位置? 在Windows XP和Windows 7上的实现会不同吗? 我需要什么function,我可以在哪里阅读更多的信息。 谢谢。