是否有一种简单的方法来自动截取屏幕截图?

时间:2010-02-28 06:12:43

标签: windows macos screenshot

我可以用什么语言编写快速程序来截取屏幕截图,还可以模拟按键?

我有一个动画/互动的Flash电影,这是一个演示文稿。我按下一个特定的键后想截取屏幕截图。

最终效果是我可以打印的一系列截图...基本上捕捉了Flash演示中的关键时刻。

3 个答案:

答案 0 :(得分:5)

我在C#中写这篇文章没有太多麻烦。以下是大部分代码:

    using (Bitmap bitmap = new Bitmap(bitmapSize.Width, bitmapSize.Height, PixelFormat.Format24bppRgb))
    using (Graphics graphics = Graphics.FromImage(bitmap))
    {
        graphics.CopyFromScreen(
            new Point(0, 0), 
            new Point(0, 0), 
            bitmapSize);
        bitmap.Save(filename, ImageFormat.Png);
    }

我建议您编写一个托管浏览器控件的应用。然后,您可以让浏览器控件显示SWF,您的应用程序将知道您需要捕获的屏幕部分的确切坐标。这样您就可以避免捕获整个屏幕或整个窗口,以后可能需要进行裁剪。

答案 1 :(得分:3)

我确信有办法,但这是我的想法。您可以使用ffmpeg等工具将电影帧转换为图片。来自ffmpeg的手册页

ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg

这将从视频中每秒提取一个视频帧,并将其输出到名为foo-001.jpeg,foo-002.jpeg等的文件中。    图像将重新调整以适应新的WxH值。

如果只想提取有限数量的帧,可以将上述命令与-vframes或-t选项结合使用,    或者与-ss结合使用以从某个时间点开始提取。

文件名中的数字“模拟”按键,因此如果您每帧提取1秒,并且想要在30秒“按”键,请使用foo-030.jpeg的文件名

答案 2 :(得分:2)

我最近发现了一个免费工具,它是屏幕捕获部分,它显然是用java编写的。

http://screenr.com/