Делаем скриншоты автоматически

Скрипт для сохранения скриншотов экрана

Делаем скриншоты автоматически

Аддон для Playnite под названием "Playnite Memories" от разработчика John Muller показался мне потрясающей идеей. Аддон сохраняет скриншоты игры каждые 15 минут, чтобы потом "было что вспомнить".

Вы когда-нибудь тратили кучу часов на прохождение игры, чтобы потом забыть что там вообще было? Цель этого аддона - помочь изменить ситуацию.

John Muller

Мне понравилась эта идея тем, что можно не париться и не держать палец готовым на кнопке скриншота в ожидании подходящего момента. Но, конечно, они будут полностью случайны и скорее всего окажутся мусором.

Создаем текстовый документ .txt в любом месте где вам удобно, вставляем туда следующий код:

@echo off chcp 65001 >nul title ScreenCapture Tool :: Указываем интервал времени в секундах: set "INTERVAL=900" :: Указываем путь для сохранения файлов: set "SAVE_PATH=E:\temp\screenshots_saver" :: Указываем формат файла "jpg" или "png" set "FORMAT=png" :: Для jpg выбираем уровень качества от 0-100 set "QUALITY=100" echo. echo Запуск ScreenCapture Tool... echo Интервал: %INTERVAL% секунд echo Папка сохранения: %SAVE_PATH% echo Формат: %FORMAT% echo Нажмите Ctrl+C для выхода echo. timeout /t 2 >nul :loop timeout /t %INTERVAL% /nobreak >nul if /I "%FORMAT%"=="png" ( goto :shotPng ) else ( goto :shotJpg ) :shotPng powershell -NoLogo -NoProfile -Command "Add-Type -AssemblyName System.Windows.Forms; Add-Type -AssemblyName System.Drawing; $s=[System.Windows.Forms.Screen]::PrimaryScreen; $b=$s.Bounds; $bm=New-Object System.Drawing.Bitmap($b.Width,$b.Height); $g=[System.Drawing.Graphics]::FromImage($bm); $g.CopyFromScreen($b.Location,[System.Drawing.Point]::Empty,$b.Size); $f='%SAVE_PATH%\screen_'+(Get-Date -Format 'yyyyMMdd_HHmmss')+'.png'; New-Item -ItemType Directory -Force -Path '%SAVE_PATH%' | Out-Null; $bm.Save($f,[System.Drawing.Imaging.ImageFormat]::Png); $g.Dispose(); $bm.Dispose(); Write-Host ('['+(Get-Date -Format 'HH:mm:ss')+'] Скриншот сохранен: '+$f) -ForegroundColor Green" goto :afterShot :shotJpg powershell -NoLogo -NoProfile -Command "Add-Type -AssemblyName System.Windows.Forms; Add-Type -AssemblyName System.Drawing; Add-Type -AssemblyName System.Drawing.Imaging; $s=[System.Windows.Forms.Screen]::PrimaryScreen; $b=$s.Bounds; $bm=New-Object System.Drawing.Bitmap($b.Width,$b.Height); $g=[System.Drawing.Graphics]::FromImage($bm); $g.CopyFromScreen($b.Location,[System.Drawing.Point]::Empty,$b.Size); $f='%SAVE_PATH%\screen_'+(Get-Date -Format 'yyyyMMdd_HHmmss')+'.jpg'; New-Item -ItemType Directory -Force -Path '%SAVE_PATH%' ^| Out-Null; $encoderParams=New-Object System.Drawing.Imaging.EncoderParameters(1); $encoderParams.Param[0] = New-Object System.Drawing.Imaging.EncoderParameter([System.Drawing.Imaging.Encoder]::Quality, %QUALITY%); $jpegCodec = [System.Drawing.Imaging.ImageCodecInfo]::GetImageEncoders() ^| Where-Object { $_.FormatDescription -eq 'JPEG' }; $bm.Save($f,$jpegCodec,$encoderParams); $g.Dispose(); $bm.Dispose(); Write-Host ('['+(Get-Date -Format 'HH:mm:ss')+'] Скриншот сохранен: '+$f) -ForegroundColor Green" goto :afterShot :afterShot goto :loop

INTERVAL=900 - указываем интервал времени в секундах, по умолчанию стоит 900 (15 минут)

SAVE_PATH=E:\temp\screenshots_saver - указываем путь для сохранения файлов, по умолчанию стоит мой на диск E:/, измените под себя

FORMAT=png - указываем желаемый формат, png или jpg

QUALITY=100 - можно указать уровень "качества" (сжатия), что повлияет на размер файла картинки и уровень качества, только если выбрали jpg (для png не имеет значения, влиять не будет)

Сохраняем файл, меняем формат файла с .txt на .bat и запускаем когда нужно. После запуска откроется окно cmd/консоли/командной строки/терминала в котором скрипт будет выполнять работу:

для проверки работоспособности поставьте не 900, а например 5-10 секунд
для проверки работоспособности поставьте не 900, а например 5-10 секунд

Оставляем окно открытым, а сами идем дальше играть в игры, пока скрипт будет выполнять свою работу на фоне. Окно скрипта можно спокойно закрывать на крестик для завершения работы.

Могу поделиться своими результатами работы скрипта:

Делаем скриншоты автоматически
3
2 комментария