Видео смотреть бесплатно

Смотреть русский видео

Официальный сайт printclick 24/7/365

Смотреть видео бесплатно

14.02.2010 21:10

leonderСкрипт для создания скриншота, отправки его в интернет и получения ссылки

Бывает, нужно показать снимок своего экрана другому человеку. Для этой задачи есть множество возможных решений. Я написал небольшой скрипт, который упрощает процесс создания и передачи скриншота. Когда я нажимаю кнопку PrintScreen, всплывает окошко с тремя кнопками, я могу: открыть только что сделанный снимок, отправить его в интернет на специальный сайт или отменить (удалить снимок). После отправки в интернет ссылка автоматически помещается в буфер обмена и на экран выводится соответствующее уведомление.
* Скрипт значительно улучшен и доведен до ума, новая версия:
http://welinux.ru/work/post/2503

Видео-демонстрация на youtube
В системе должна быть установлена нормальная операционная система (например, linux) и следующие пакеты (программы):

scrot, gxmessage, gpicview, xsel, curl.

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

Следует создать текстовый файл в каталоге ~/bin/, назвать его как-нибудь наподобие screenshot, сделать исполняемым и скопировать в него следующий код. И сразу подправить код под себя - как минимум, прописать свой каталог для изображений.

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/bin/sh

# Скрипт использует программы:
# 1. scrot - утилита командной строки для захвата изображения экрана.
# 2. gxmessage - обеспечивает легкий способ для отображения сценариев всплывающими диалогами
# 3. gpicview - самый легкий, простой и удобный просмотрщик изображений, что я видел
# 4. curl - для загрузки файлов по одному из протоколов HTTP, HTTPS или FTP.
# 5. xsel - для манипуляций с выделениями и буфером обмена

# Сначала создаётся отдельный каталог для снимков, сделанных сегодня.
# Создаётся только в том случае, если его ещё нет.
DIR=~/images/screenshots/`date +%Y.%m.%d`
if < ! -d $DIR >; then mkdir $DIR; fi

#Определяется имя файла для скриншота
SCR=$DIR"/`date '+%d-%m%y-%N'`".jpg;

#Создаётся снимок экрана
#Смотрите man scrot, у него есть интересные опции ;-)
scrot --quality 95 "$SCR";

#Выводится на экран окошко с вопросом и вариантами ответа
gxmessage -title "Сделан снимок экрана" -center -buttons "Открыть:1,В Интернет:2,Удалить:3" "Что следует сделать с изображением?";
exitcode=$?;

#Указывается, что нужно сделать в случае нажатия определённой кнопки
case "$exitcode" in

#Открыть:1 - Открыть сделанный снимок в программе-просмотрщике картинок
<1> ) gpicview "$SCR";;

#В Интернет:2 - Заливка изображения на хостинг картинок и получение ссылки
<2> )
LINK=`curl --silent -F "image"=@"$SCR" -F "key"="5d317f0bee23b282473522e1aa68f621" http://imgur.com/api/upload.xml | grep -Eo 'http://i.imgur.com/<a-za-z0-9.>+.<a-za-z>+' | head -1`;
#Удаление локальной копии
rm "$SCR";
#Кладём ссылку в буфер обмена
echo "$LINK" | xsel -b -i;
#Выводим окошко, чтобы стало ясно, что работа скрипта закончена
gxmessage -title "Готово!" -center "Ссылка <$LINK> сохранена в буфер обмена";;

#Удалить:3 - Удалить сделанный снимок
<3> ) rm "$SCR";;
esac</a-za-z></a-za-z0-9.>


Есть и другие интересные решения этой задачи, например, с использованием сервиса Dropbox.

Пожалуйста, комментируйте, жду конструктивной критики! Я только учусь, поэтому буду рад, если поможете улучшить скрипт.

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


Тэги: curl gxmessage Linux Screenshot велосипед скрипт
+ 8 -
Похожие Поделиться

d1g 14.02.2010 21:32 #
+ 0 -
делал автозалив на питоне под хоткеем.
однако большой минус, именно под хоткеем, - нечаяно сделаный и отправленый скрин с нежелательным изображением)
digiwhite 14.02.2010 21:44 #
+ -1 -
За gxmessage спасибо. А то в zenity походу нету возможности создать набор кнопок для выбора.

ЗЫ: и таки dropbox - это не image hosting :). Если только в частном случае.
eugenez 14.02.2010 22:30 #
+ 0 -
Хорошо бы имя файла не только в буфер, а и в лог какой-ни будь писать. Чисто чтобы потом реквест на удаление оформить ;) А то всякие случаи возможны.
Minoru 15.02.2010 01:44 #
+ 2 -
Хороший скрипт. Сам лично такими не пользуюсь, т.к редко приходится делиться скриншотами, но все равно — спасибо.

Только я бы на твоём месте не увлекался так комментированием — достаточно объяснить сложные и неочевидные действия, скажем, получение ссылки на скриншот. Также читабельность кода может повысить переход на длинные опции вместо коротких (--quality вместо -q).
leonder 15.02.2010 09:37 #
+ 0 -
Благодарю. Примерно таких поучений и ожидаю, чтобы научиться писать красиво и полезно. А комментарии... почему бы и нет, кому-то практически всё не очевидно и пояснение может оказаться подспорьем в осваивании скриптов.
Slip 15.02.2010 11:18 #
+ 0 -
Спасибо. Пользуюсь вот таким добром. Тут свои плюсы. Например, контекстное меню загрузки в Nautilus'e + сразу готовые превыю для форумов.
После загрузки файла окно выглядит вот так:

Скрипт там весьма большой, но функционал мне уж больно нравится.
Может кто подскажет: как объединить scrot с этим заливщиком?
commonD 15.02.2010 12:07 #
+ 1 -
file=$DIR"/`date '+%d-%m%y-%N'`".jpg;

хотя в баше и можно определять имена переменных такие же как имена команды, но считаю, что лучше этого избегать. И глобальные переменные лучше определять в верхнем регистре.
goblinyara 16.02.2010 15:37 #
+ 0 -
В системе должна быть установлена нормальная операционная система (например, linux)

+1 =)

Смотреть видео онлайн

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн