Вы наверняка уже знаете, что основным средством для работы с растровой графикой я использую IrfanView. Я посвятил целый пост описанию того, как запускать эту программу в Linux, но для пользователей Windows достаточно будет ознакомиться с первой половиной.
Сегодня я расскажу про скриншотопроизводство с помощью этой программы, а также представлю скрипт (сценарий), который использовал более трёх лет (с момента создания скрипта и до отказа от Windows) для автоматического запуска после включения компьютера режима создания скриншотов в IrfanView, задействуя графический интерфейс и имитацию нажатия клавиш человеком.
! Если вы хотите сразу перейти непосредственно к части со скриптом – кликните сюда.
Вот почему в Windows я использовал для создания скриншотов эту программу:
– создание скриншота возможно производить по заданной комбинации клавиш или автоматически с выставленным интервалом;
– возможность автоматического сохранения файла по выбранному заранее пути (в случае отсутствия папка будет создана) с именем по заданной маске (если у вас сотни скриншотов, использование в имени файла последовательности год-месяц-день_время очень упрощает обращение с ними);
– богатый выбор вариантов захвата области (весь экран, текущий монитор, активное окно, выбранная область и т.п.);
– в момент создания скриншота (если у вас выбрана не беззвучная звуковая схема) воспроизводится системный звук;
– и, конечно же, огромный выбор форматов для сохранения с настройками, доступными в зависимости от того, что вы выбрали.
На последнем пункте остановлюсь подробнее. Вы, скорее всего, знаете, что сейчас самых используемых форматов картинок, грубо говоря, два: .jpg (или .jpeg) и .png; плюс .gif для анимированных, но его не рассматриваем, т.к. у нас скриншоты. Так вот, IrfanView – программа, которая позволяет создавать изображения в формате .png, выставив им максимальную степень сжатия – 9ую, а не используя неизвестное значение по умолчанию, как большинство программ работы с растровой графикой, в результате чего результирующий файл получается наименьшего объёма, но при этом всё так же качество не теряется.
Что касается .jpg, то в одном из обновлений программы для настроек сохранения в этом формате был добавлен пункт "Желаемый размер файла", который позволяет получить размер файла в заданных пределах путём автоматического изменения качества изображения. Так вот, в случаях, когда размер изображения (ширина x высота) большой и/или желаемый размер файла (в КиБ) маленький, процесс сохранения файла может занимать несколько секунд, в связи с чем создание большой вереницы идущих друг за другом скриншотов может оказаться проблематичным.
Я рекомендую сохранять скриншоты в формате .png (без потерь качества изображения) или в .jpg с настройками, нацеленными на качество. Позже вы сможете пересохранить готовые изображения в соответствии с вашими нуждами. В случае больших количеств в этом поможет пакетная (групповая) конвертация IrfanView (клавиша [B]).
! В ранних версиях программы выбранный формат сохранения скриншотов не отличался от настроек сохранения изображений из основного окна, в связи с чем при каждом запуске процедуры создания скриншотов (клавиша [C]) стоило убеждаться в том, что выбран правильный формат.
Вот какие настройки форматов для скриншотов обычно использую я:
– для .png
Настройки IrfanView для сохранения в .png
– для .jpg/.jpeg
Настройки IrfanView для сохранения в .jpg
Шаблон имени можно задать типа такого:
IrfanView_screenshot_%Y-%m-%d_%H.%M.%S
Тогда имя созданного файла будет выглядеть примерно так:
IrfanView_screenshot_2013-11-10_00.37.30.png
Это автоматически позволяет хранить файлы упорядоченными по времени создания при выборе в системе "Упорядочивать по имени". Дополнительным бонусом является то, что даже при копировании файла или пересохранении в другой формат/с другими настройками позже, данные об изначальном времени создания всё равно сохранятся.
Теперь часть, посвящённая автоматизации.
В моём сценарии используется рассмотренный в предыдущем посте PowerMenu. Кроме того, IrfanView предусматривает использование с помощью командной строки, но на момент, когда я захотел упростить процесс создания скриншотов, это не учитывалось, в результате имею то, что получилось.
Скрипт написан на JScript. В нём достаточно подробные комментарии, что может быть полезно тем, кто интересуется Windows Script Host (WSH).
! Замечания: WSH входит "в комплект поставки" Windows начиная с 98й версии, и жив поныне, но для систем, которые моложе Windows XP, добавлены неучтённые в моём скрипте моменты, в связи с чем, в таком "как есть" виде он без дополнительной доработки не функционирует должным образом.
При выполнении скрипта происходят следующие операции:
1. Ожидание в течение 25 сек. для загрузки самой системы (он был помещён в автозагрузку);
2. Запуск IrfanView;
3. Имитация нажатия клавиши [C] в окне программы для активации функции снятия скриншотов;
4. Имитация нажатия [Enter] для подтверждения параметров скриншотосоздания;
! Параметры для создания скриншотов необходимо задать в ручную до использования скрипта. Также при необходимости внесения изменений в параметры, это производится опять же вручную.
5. Запуск PowerMenu в режиме скрытия собственного значка;
6. Сворачивание в системный трей окна с заголовком IrfanView, который при активации скриншотинга сворачивается на Панель инструментов.
Сам скрипт (сохраните в файл с расширением .js):
// ***** Скрипт для автоматического выполнения *****
// ** некоторых действий при загрузке компьютера ***
// Михаил Винаков. 9 марта 2009г.
// 1. Запуск программы, сворачивающей приложения в трей;
// 2. Запуск IrfanView;
// 3. Включение функции снятия скриншота;
// 4. Сворачивание IrfanView в трей
// *******************************************************
// *** Начало сценария
// Описание обязательной переменной
var oObject = WScript.CreateObject("WScript.Shell");
// *** Описание переменных
var cCommand = "%COMSPEC% /c";
// Команда запуска command.com с закрытием окна
var cPowerMenu = "C:\\_Programs_\\PowerMenu\\PowerMenu";
// Путь к программе PowerMenu
var cPowerMenuOpt1 = " -hideself on";
// Опция скрытия собственного значка в трее
var cPowerMenuOpt2 = " -minimized on IrfanView";
var cIrfanView = "C:\\_Programs_\\IrfanView\\i_view32";
WScript.Sleep(25000);
// *** Последовательный запуск команд
oObject.Run(cIrfanView);
// Запуск IrfanView
WScript.Sleep(2000);
// Приостановка сценария для загрузки IrfanView
oObject.AppActivate("IrfanView");
// Передача фокуса IrfanView
WScript.Sleep(200);
// Приостановка сценария на 0.2 сек.
oObject.SendKeys("c");
// Нажимаем [C] для запуска опции кэпчеринга экрана
WScript.Sleep(200);
// Приостановка сценария на 0.2 сек.
oObject.SendKeys("~");
// Нажимаем [Enter] для старта кэпчеринга экрана
WScript.Sleep(200);
// Приостановка сценария на 0.2 сек.
oObject.Run(cPowerMenu);
// Запускается PowerMenu
WScript.Sleep(200);
// Приостановка сценария на 0.2 сек.
oObject.Run(cCommand + cPowerMenu + cPowerMenuOpt1, 0, 0);
// Скрытие значка PowerMenu, завершения не ждать (последний 0))
// Параметры запуска окон (предпоследняя цифра):
// 0 - скрытое (не отображается)
// 1 - развёрнутое на весь экран (максимизированное)
// 4 - обычное (стандартный размер)
// 7 - свёрнутое (минимизированное)
WScript.Sleep(500);
// Приостановка сценария на 0.5 сек.
oObject.Run(cCommand + cPowerMenu + cPowerMenuOpt2, 0, 0);
// Сворачиваем окна с заголовком "IrfanView" (о параметрах - выше)
// *** Конец сценария
Некоторые пояснения:
– сценарий намеренно снабжён излишними комментариями, начинающимися с последовательности символов "//", каждое действие описано, хотя не требуется комментировать повторяющиеся команды каждый раз (писалось на случай, если я захочу что-то подправить через сто лет, а документации уже не найти); все комментарии могут быть удалены для уменьшения файла (хотя он и так не особо огромен, а при обработке скрипта игнорируется), но понимание кода без комментариев пострадает;
– временные задержки WScript.Sleep() указаны в милисекундах и могут быть изменены в зависимости от быстродействия вашей машины; совсем убирать задержки между имитируемыми нажатиями клавиш не стоит, а вот 25-секундную остановку для прогрузки Windows стоит изменить под свою систему;
– шапка с финтифлюшками добавлена не бахвальства ради, а в соответствии с рекомендациями понимающих в деле написания скриптов людей;
– изначально большая часть комментариев располагалась справа от исполняемого кода, здесь расположение комментариев изменено по соображению удобочитаемости с экранов различных девайсов;
– пути к исполняемым файлам (i_view32.exe и powermenu.exe – в коде упущены расширения файлов) следует изменить в соответствии с вашими данными.
! Оговорка: Из-за того, что мы имитируем нажатие клавиш человеком, на использование скрипта накладываются некоторые логичные ограничения:
– Перед нажатием клавиш скрипт активирует окно IrfanView даже если активно другое, но если в этот момент сторонний процесс (или человек) вручную активирует другое окно или приложение, нажатия клавиш [C] и [Enter] уйдут не туда. К фатальным последствиям это не приведёт, но активировать скриншотосоздание придётся вручную, вызвав IrfanView из трея, нажав клавиши пальцами и снова свернуть в трей из контекстного меню, добавляемого при запущенном PowerMenu;
– Если до момента сворачивания IrfanView в трей у вас имеются и другие запущенные экземпляры программы (например, вы просматривали фото так же в IrfanView) или открыта папка, имя которой начинается с IrfanView, они также будет свёрнуты в системный трей.
В связи с этим предлагаю дождаться выполнения скрипта до момента сворачивания IrfanView в трей (вы можете наблюдать процесс открытия окна с параметрами создания скриншотов и закрытия его при имитации клавиши [Enter]) и уже после этого приступать к дальнейшей работе.
Ссылки:
IrfanView можно скачать на официальном сайте или архивом с моего Гугл Диска (работать будет уже после распаковки), сразу с русским языком по умолчанию, аддонами и некоторыми произведёнными настройками.
PowerMenu берите также с Диска.
Спасибо большое за этот пост. Оказался очень полезным и крайне актуальным.
ОтветитьУдалитьПожалуйста. Рад, что кому-то пригодилось.
Удалить