Online video hd

Смотреть 365 видео

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

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

14.02.10 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

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

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

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



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

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

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

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


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

+1 =)

Лучшие блоги (все 150)
Топ пользователей Топ блогов
Топ пользователей Топ блогов
Элита (все 3005 из 224 городов)
Топ пользователей Топ блогов

Новенькие: Pif, dragonta, Arkan, ave.vitaliy, Cait Sith
welinux.ru

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

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


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

Online video HD

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

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

Full HD video online

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

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

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