··-C········ сохранить изображение указателя мыши на экране. только··············в неинтерактивных режимах
··-d········ выводить ошибки в диалоге с графическим интерфейсом
··-i········ захватить изображение интерактивно, выбранной области или окна
·············· клавиша control — заставляет поместить снимок в буфер обмена
·············· клавиша пробела — переключает между режимами захвата области,
································ выбранной мышью, и окна
·············· клавиша escape··- отменяет интерактивный захват изображения экрана
··-m········ захватить изображение только на основном мониторе, игнорируется··············с флагом −i
··-M········ поместить снимок экрана в новое электронное письмо
··-o········ в режиме захвата окна не захватывать тень от окна
··-P········ открыть снимок экрана в программе Preview
··-s········ разрешить только режим захвата выбранной области
··-S········ в режиме захвата окна захватить экран, а не окно
··-t формат создаваемого изображения, по умолчанию png
············ (поддерживаются также pdf, jpg, tiff и другие форматы)
··-T Выполнить захват с задержкой секунд, по умолчанию 5
··-w········ разрешить только режим захвата окна
··-W········ начать взаимодействие в режиме захвата окна
··-x········ не проигрывать звуки
··-a········ не включать окна, присоединенные к выбранным окнам
··-r········ не добавлять метаданные о разрешении (dpi) в изображение
··-l захватить окно с идентификатором
··-R захватить указанную область на экране
··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).
Читать дальше