Выбрать главу

·············· клавиша пробела — переключает между режимами захвата области,

································ выбранной мышью, и окна

·············· клавиша escape··- отменяет интерактивный захват изображения экрана

··-m········ захватить изображение только на основном мониторе, игнорируется··············с флагом −i

··-M········ поместить снимок экрана в новое электронное письмо

··-o········ в режиме захвата окна не захватывать тень от окна

··-P········ открыть снимок экрана в программе Preview

··-s········ разрешить только режим захвата выбранной области

··-S········ в режиме захвата окна захватить экран, а не окно

··-t<format> формат создаваемого изображения, по умолчанию png

············ (поддерживаются также pdf, jpg, tiff и другие форматы)

··-T<seconds> Выполнить захват с задержкой <seconds> секунд, по умолчанию 5

··-w········ разрешить только режим захвата окна

··-W········ начать взаимодействие в режиме захвата окна

··-x········ не проигрывать звуки

··-a········ не включать окна, присоединенные к выбранным окнам

··-r········ не добавлять метаданные о разрешении (dpi) в изображение

··-l<windowid> захватить окно с идентификатором <windowed>

··-R<x,y,w,h> захватить указанную область на экране

··files··где сохранить снимок экрана, 1 на экран

Это приложение так и просит написать для него сценарий-обертку. Например, чтобы сделать снимок экрана с задержкой 30 секунд, можно использовать следующую команду:

$ sleep 30; screencapture capture.tiff

Но давайте придумаем что-нибудь поинтереснее, согласны?

Код

Листинг 11.1 демонстрирует, как можно автоматизировать работу с утилитой screencapture для скрытного создания снимков экрана.

Листинг 11.1. Сценарий-обертка screencapture2

··#!/bin/bash

··# screencapture2 — использует команду screencapture в OS X для создания

··#·· серии скриншотов главного окна в скрытном режиме. Удобно, если вы

··#·· находитесь в сомнительном вычислительном окружении!

··capture="$(which screencapture) −x — m −C"

··freq=60···· # Каждые 60 секунд.

··maxshots=30··# Максимальное число скриншотов.

··animate=0·· # Создать анимированный gif? Нет.

··while getopts "af: m" opt; do

····case $opt in

······a) animate=1;········;;

······f) freq=$OPTARG;····;;

······m) maxshots=$OPTARG;;; # Завершить после создания заданного числа снимков.

······?) echo "Usage: $0 [-a] [-f frequency] [-m maxcaps]" >&2

··········exit 1

····esac

··done

··counter=0

··while [$counter −lt $maxshots]; do

····$capture capture${counter}.jpg # Счетчик counter постоянно увеличивается.

····counter=$((counter + 1))

····sleep $freq·· # т. е. freq — число секунд между снимками.

··done

··# Теперь, если требуется, сжать все отдельные снимки в один анимированный GIF.

··if [$animate −eq 1]; then

····convert −delay 100 −loop 0 −resize "33 %" capture* animated-captures.gif

··fi

··# Не возвращать никаких других кодов состояния для скрытности.

··exit 0

Как это работает

Этот сценарий делает снимки экрана через каждые $freq секунд , пока не будет достигнуто количество $maxshots (по умолчанию создается 30 снимков с интервалом 60 секунд между ними). Затем создается серия файлов JPEG, последовательно пронумерованных начиная с 0. Все это может пригодиться, если вы создаете обучающие материалы или хотите определить, пользовался ли кто-то вашим компьютером в ваше отсутствие. Запустите сценарий и увидите, что происходило, если этот «кто-то» не оказался умнее.

Последний раздел сценария самый интересный: при необходимости он создает анимированный GIF в одну треть размера оригинала, используя инструмент преобразования из пакета ImageMagick . Это удобный способ просмотреть сразу все изображения. В главе 14 мы найдем для ImageMagick большое количество применений! Если в вашей системе OS X этот инструмент отсутствует, то с помощью диспетчера пакетов, такого как brew, вы сможете установить его одной командой (brew install imagemagick).

Запуск сценария

Поскольку этот сценарий предназначен для скрытной работы, в простейшем виде команда его запуска выглядит так: