Делание снимка экрана определенной области из командной строки

Я выполняю рабочий стол Lubuntu 12, и я ищу инструмент, который может сделать снимки экрана определенной области из командной строки.

Я испытал Затвор. Это работает, но, когда я выполняю команду, она генерирует предупреждения ( Wnck-WARNING **: Unhandled action type). Я думаю, что инструмент мог бы быть разработан для выполнения под GNOME и не мог бы быть совместим с Lubuntu. Снимок экрана сделан успешно, но команда зависает, который является чем-то, с чем я не могу работать.

Таким образом, что такое хороший инструмент снимка экрана это

  1. Выполнения из командной строки
  2. Может получить определенную область рабочего стола

Мне нравится добавлять это scrot, поставки инструмента Lubuntu с, не имеет опции обрезать определенные координаты, но только в интерактивном режиме пользовательскую область, которая не является тем, что я ищу.

5
задан 20 February 2015 в 20:24

5 ответов

В Lubuntu можно сделать точно, что Вы хотите: возьмите снимок экрана из командной строки с командой:

scrot_extended 100 100 400 400

использование сценария ниже.

Эти четыре аргумента <x>, <y>, <width>, <height>.
У меня не было шанса (все же) для тестирования его в Lubuntu 12.04, но кажется маловероятным, что это не работало бы; это использует python 2 и основные инструменты командной строки, которые в течение долгого времени уже существуют.

Объяснение

Сценарий:

  • делает снимок экрана с scrot
  • сохраняет его во временный файл
  • использование imagemagick, это создает новое изображение, обрезая снимок экрана, с аргументами, с которыми Вы запустили скрипт
  • образ сохраняется в каталог как пронумерованный файл, для предотвращения перезаписи

Как использовать

  1. Сценарий использует обоих scrot и imagemagick. scrot должен быть в Вашей системе. Устанавливать imagemagick:

    sudo apt-get install imagemagick
    
  2. Скопируйте сценарий в пустой файл

  3. По умолчанию образы сохраняются к ~/scrot_images, названный: outputfile_1.png, outputfile_2.png и т.д. Измените его, если Вы хотите, как отмечено в сценарии. Обратите внимание, что при изменении diretory необходимо использовать полный путь.
  4. Сохраните файл к ~/bin (создайте каталог в случае необходимости), как scrot_extended (никакое расширение), и делают это исполняемым файлом.
  5. Выйдите из системы и въезжайте задним ходом и сделайте свой снимок экрана с командой:

    scrot_extended <x> <y> <width> <height>
    

Пример:

scrot_extended 100 100 400 400

enter image description here

outputfile:

enter image description here

Сценарий

#!/usr/bin/env python
import subprocess
import os
import sys
# setting default directories / filenames
home = os.environ["HOME"]
temp = home+"/"+".scrot_images"
img_in = temp+"/in.png"
# if you prefer, you can change the two line below:
output_directory = home+"/"+"scrot_images" # output directory
filename = "outputfile"                    # filename
# creating needed directories
for dr in [temp, output_directory]:
    if not os.path.exists(dr):
        os.mkdir(dr)
# creating filename (-number) to prevent overwriting previous shots
n = 1
while True:
    img_out = output_directory+"/"+filename+"_"+str(n)+".png"
    if os.path.exists(img_out):
        n = n+1
    else:
        break
# reading arguments,arranging commands to perform
coords = sys.argv[1:5]
cmd1 = ["scrot", img_in]
cmd2 = ["convert", img_in, "-crop", coords[2]+"x"+coords[3]+"+"+coords[0]+"+"+coords[1], "+repage", img_out]
# Take screnshot, crop image
for cmd in [cmd1, cmd2]:
    subprocess.call(cmd)
8
ответ дан 23 November 2019 в 08:52

Используя maim

<час>

Обзор

maim (делают изображение) является новой утилитой снимка экрана, которая разработана как улучшенная версия scrot.

Одна из многих новых возможностей maim идет, поддержка установки области снимка экрана прямо от CLI. Синтаксис работает следующим образом:

maim -x <x-coordinate> -y <y-coordinate> -w <width> -h <height>

, например:

maim -x 100 -y 100 -w 400 -h 400

Установка

maim не прибыла в официальные репозитории, еще, и не является частью никакого PPA, также. Необходимо будет скомпилировать его из источника для установки его.

После проверки, что все зависимости удовлетворены...

sudo apt-get install build-essential cmake
sudo apt-get install libimlib2-dev libxrandr-dev libxfixes-dev

... мы можем возобновить фактическую компиляцию и установку:

git clone https://github.com/naelstrof/maim.git
cd maim
cmake ./
make && sudo make install

Вот именно. Необходимо теперь быть в состоянии звонить maim от терминала. Удостоверьтесь, что проверили документацию (maim --help) для всех доступных параметров; и выезд slop , утилита тем же разработчиком, который позволяет Вам в интерактивном режиме выбирать область снимка экрана.

1
ответ дан 23 November 2019 в 08:52

Согласно этому документу в Wiki здесь: https://wiki.ubuntu.com/Lubuntu/Applications/Process%20Documentation xfce4-screenshooter является одним из приложений снимка экрана для того дистрибутива. На моей установке XFCE следующая команда делает то, что Вы спрашиваете.

xfce4-screenshooter
0
ответ дан 23 November 2019 в 08:52

Свяжите сценарий удара, который реализует scrot и imagemagick к сочетанию клавиш

Это делает почти то же самое как ответ Jacob Vlijm, но с ударом. Это называет файлы с помощью метки времени, чтобы не перезаписывать существующие файлы. Это также позволяет Вам определять параметры обрезки значения по умолчанию в сценарии, таким образом, Вы не обязаны называть его с любыми параметрами.

Назовите сценарий ниже следующим образом (предполагающий, что Вы находитесь в каталоге, где сценарий хранится, иначе полный путь к сценарию требуется):

  • С параметрами: ./screenshot.sh $left_px $top_px $width_px $height_px ИЛИ
  • Без параметров: ./screenshot.sh в этом случае параметры по умолчанию, указанные в сценарии, используются.

1) Установите необходимые приложения

Из командной строки, выполненной:

sudo apt install scrot imagemagick

2) Создайте сценарий

Откройте свой предпочтительный текстовый редактор и создайте новый файл простого текста со следующим содержанием. Убедитесь изменение переменных наверху для определения, где Вы хотите сохраненные образы и какую часть экрана Вы хотите обрезать. Посмотрите этот прием для получения координат мыши, которые могут использоваться для нахождения left и top и вычислять width и height.

#!/bin/bash

# Change these values to match your preferences
imageQuality=100    # scrot default is 75
screenshotDir="/tmp"    # directory in which to save screenshots
imageName="$(date +%Y-%m-%d.%H:%M:%S.%N).jpg"   # save image names as timestamp
default_left=10     # begin crop this number of pixels from the left of the image
default_top=10      # begin crop this number of pixels from the top of the image 
default_width=100   # crop this many pixels wide
default_height=100  # crop this many pixels tall

#Do not make any more changes from here down unless you know what you're doing
l=$1; t=$2; w=$3; h=$4
left=${l:=$default_left}
top=${t:=$default_top}
width=${w:=$default_width}
height=${h:=$default_height}
imagePath="$screenshotDir/$imageName"

[ ! -d "$screenshotDir" ] && mkdir -p "$screenshotDir"
scrot -q $imageQuality "$imagePath"
convert "$imagePath" -crop ${width}x${height}+${left}+${top} "$imagePath"

Сохраните этот сценарий везде, где Вы любите и делаете его исполняемым файлом. Принятие Вас назвало Ваш сценарий screenshot.sh, Вы сделали бы это в командной строке как так:

chmod +x /path/to/your/script/screenshot.sh

3) Свяжите этот сценарий с сочетанием клавиш (дополнительно)

Следуйте за направлениями, которые, как находят здесь, создали пользовательское сочетание клавиш. Когда Вы переходите к сути дела, где Вы, как предполагается, вводите команду, поместите полный путь к Вашему screenshot.sh файл (включая имя файла).

1
ответ дан 23 November 2019 в 08:52

Текущая версия scrot действительно имеет возможность снимать скриншот определенного прямоугольника за пределами экрана.

scrot --autoselect '1,2,3,4' outfile.png # снимаем скриншот прямоугольника 1,2 с шириной 3 и высотой 4

Естественно, вы замените 1,2 на x , y пиксельные координаты нужного прямоугольника. Таким образом, x, y будет верхним левым пикселем желаемого прямоугольника.

также см. этот ответ , чтобы узнать, как получить текущие координаты мыши из сценария bash

2
ответ дан 13 February 2020 в 22:13

Другие вопросы по тегам:

Похожие вопросы: