Я выполняю рабочий стол Lubuntu 12, и я ищу инструмент, который может сделать снимки экрана определенной области из командной строки.
Я испытал Затвор. Это работает, но, когда я выполняю команду, она генерирует предупреждения ( Wnck-WARNING **: Unhandled action type
). Я думаю, что инструмент мог бы быть разработан для выполнения под GNOME и не мог бы быть совместим с Lubuntu. Снимок экрана сделан успешно, но команда зависает, который является чем-то, с чем я не могу работать.
Таким образом, что такое хороший инструмент снимка экрана это
Мне нравится добавлять это scrot
, поставки инструмента Lubuntu с, не имеет опции обрезать определенные координаты, но только в интерактивном режиме пользовательскую область, которая не является тем, что я ищу.
В Lubuntu можно сделать точно, что Вы хотите: возьмите снимок экрана из командной строки с командой:
scrot_extended 100 100 400 400
использование сценария ниже.
Эти четыре аргумента <x>, <y>, <width>, <height>
.
У меня не было шанса (все же) для тестирования его в Lubuntu 12.04
, но кажется маловероятным, что это не работало бы; это использует python 2
и основные инструменты командной строки, которые в течение долгого времени уже существуют.
Сценарий:
scrot
imagemagick
, это создает новое изображение, обрезая снимок экрана, с аргументами, с которыми Вы запустили скриптСценарий использует обоих scrot
и imagemagick
. scrot
должен быть в Вашей системе. Устанавливать imagemagick:
sudo apt-get install imagemagick
Скопируйте сценарий в пустой файл
~/scrot_images
, названный: outputfile_1.png
, outputfile_2.png
и т.д. Измените его, если Вы хотите, как отмечено в сценарии. Обратите внимание, что при изменении diretory необходимо использовать полный путь.~/bin
(создайте каталог в случае необходимости), как scrot_extended
(никакое расширение), и делают это исполняемым файлом.Выйдите из системы и въезжайте задним ходом и сделайте свой снимок экрана с командой:
scrot_extended <x> <y> <width> <height>
Пример:
scrot_extended 100 100 400 400
outputfile:
#!/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)
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
, утилита тем же разработчиком, который позволяет Вам в интерактивном режиме выбирать область снимка экрана.
Согласно этому документу в Wiki здесь: https://wiki.ubuntu.com/Lubuntu/Applications/Process%20Documentation xfce4-screenshooter является одним из приложений снимка экрана для того дистрибутива. На моей установке XFCE следующая команда делает то, что Вы спрашиваете.
xfce4-screenshooter
Это делает почти то же самое как ответ 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
файл (включая имя файла).
Текущая версия scrot действительно имеет возможность снимать скриншот определенного прямоугольника за пределами экрана.
scrot --autoselect '1,2,3,4' outfile.png
# снимаем скриншот прямоугольника 1,2 с шириной 3 и высотой 4
Естественно, вы замените 1,2 на x , y пиксельные координаты нужного прямоугольника. Таким образом, x, y будет верхним левым пикселем желаемого прямоугольника.
также см. этот ответ , чтобы узнать, как получить текущие координаты мыши из сценария bash