2010-02-28 70 views
3

用什么语言可以编写一个快速程序来截取屏幕截图并可能模拟按键?有没有简单的方法来自动截图的拍摄?

我有一个动画/交互式Flash电影,是一个演示文稿。我想在按下特定键后进行截图。

最终效果是我可以打印的一组截图......基本上捕捉了闪现演示文稿中的关键时刻。

+0

真的很好的问题,相当有用! – JosephDoggie 2015-01-30 21:24:24

回答

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,并且您的应用程序将知道需要捕获的屏幕部分的确切坐标。这样可以避免必须捕获整个屏幕或整个窗口,以后可能需要裁剪。

+2

这很酷。我从来没有做过C#......也许是时候尝试一下了! :) – milesmeow 2010-03-01 04:25:57

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

+1

这是一个很好的解决方案,如果我有一个视频,并希望采取框架。如果我想要这样做,我会记住这一点。 – milesmeow 2010-03-01 04:25:02

+2

你的Flash电影也是一个“视频”。 – ghostdog74 2010-03-01 04:52:09

+1

我们在谈论.flv或.swf的吗?我有一个互动的.swf文件。 – milesmeow 2010-03-04 14:56:50

2

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

http://screenr.com/

相关问题