Есть ли простой способ автоматизировать съемку скриншотов? - PullRequest
3 голосов
/ 28 февраля 2010

На каком языке можно написать быструю программу для создания снимков экрана, а также, возможно, эмулировать нажатие клавиши?

У меня есть анимированный / интерактивный флэш-фильм, который является презентацией. Я хочу сделать снимок экрана после нажатия определенной клавиши.

Конечный эффект - это скриншоты, которые я могу напечатать ... в основном они фиксируют ключевые моменты во флэш-презентации.

Ответы [ 3 ]

5 голосов
/ 28 февраля 2010

Я написал это на 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, и ваше приложение будет знать точные координаты той части экрана, которую вам нужно захватить. Таким образом, вы можете избежать захвата всего экрана или всего окна, которое вам, возможно, придется обрезать позже.

3 голосов
/ 28 февраля 2010

Я уверен, что есть способы, но вот моя идея. вы можете конвертировать кадры фильма в изображения, используя такие инструменты, как 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 голосов
/ 28 февраля 2010

Недавно я нашел бесплатный инструмент, который делает снимок экрана. Он написан на java.

http://screenr.com/

...