8/01/2010

Скриншоты в Linux, или как сделать снимок экрана

Скриншоты - это как показы высокой моды:
всё красиво и вычурно, но по улице в таком не ходят.
(с) глас народа из раздела Галереи на ЛОРе

Как-то раз мне задал вопрос один новоиспечённый убунтовец: как в Linux сделать скриншот в иксах (screenshot, снимок рабочей области)? А то тут кнопка PrnScr/SysRq не работает..." Естественно, ему было рассказано про истинное назначение кнопки SysRQ, но вопрос остался: чем скриншоты в Linux делать!? Как и многое другое в Linux, это имеет 1001 решение.

The Gimp
В арсенале богатого возможностями GIMP есть и функция захвата окна: Файл -> Захватить -> Снимок экрана. Удобно, так как сразу можно подредактировать изображение. Естественно, сохранение изображений в любой мыслимый, несколько непостижимых (KISS CEL) и один невероятный формат (исходный код С).


Здесь можно захватить либо весь экран (можно выставить задержку по времени), либо одно окно.

Shutter
Небольшая программа shutter умеет не только снимать скриншоты указанных окон, частей окон, всего экрана, но и применять различные эффекты к снятым изображениям и даже расставлять стрелки.

Сайт программы http://shutter-project.org/.



KSnapshot
Программа для снятия скриншотов из комплекта KDE отлично делает скриншоты экрана целиком, части, окна и тп.
Кстати, на данной картинке показан KSnapshot, снимающий сам себя.

gnome-screenshot
Программа по умолчанию в среде GNOME для снятия скриншотов.
Если использовать команду:
gnome-screenshot --interactive
можно настроить параметры снятия скриншота, например задержку перед снятием скриншота.


screengrab-qt
Небольшой, но быстрый и не тянущий за собой пол-KDE велосипед для скриншотов с круглыми колёсиками screengrab-qt, который выглядит вот так:


Из возможностей можно отметить возможность скриншотить полный экран, окно или область, сохранение в PNG\JPG, установку задержки и возможность повесить на горячую клавишу. Сайт программы здесь, где можно скачать и виндовый экзешник, и убунтушный deb-пакетик. Спасибо тов. shurutov за наводку.


xfce4-screenshooter
Даже маленькая и скромная графическая среда XFCe имеет свою утилиту для снятия скриншотов: xfce4-screenshooter. Тоже умеет снимать экран, окно, область, и выставлять задержку.

Выглядит скромно и функционально.


ImageMagic
Скриншоты можно делать и консольными программами, например ImageMagic. Для этого в иксовом терминале пишем:
import MyScreenshot.png

При этом появится перекрестье и, ткнув им в нужное окно, имеем скриншот в файле MyScreenshot.png.

Чтобы сделать скриншот с задержкой (например, нужно открыть меню), пишем:
sleep 10; import -window root MyScreenshot2.png
Здесь мы получим задержку в 10 секунд и захватим не одно окно, а весь экран в файл MyScreenshot2.png.

xwd
Ещё одна консольная утилита по скриншотостроительству, работающая в духе духа духовных предков UNIX:

xwd > screen.xwd

Далее пользуем силу ImageMagic для конвертирования:

convert screen.xwd screen.png

Можно снять весь экран, указав ключ -root если надо.


Wink

Это в общем не совсем программа для скриншотов, но для создания обучающих роликов.

Однако она тоже умеет делать скриншоты в Linux.


scrot (SCReen shOT)
Утилита командной строки с большими возможностями по скриншотостроительству. Базовый синтаксис:
scrot desktop.png
сделает снимок экрана и положит его в descktop.png. Умеет вещи и посложнее, например снимать с задержкой:
scrot -cd 5 countdown.png
с ключом выведет на экран обратный отсчёт. Сразу можно выставить качество изображения при снятии скриншота:
scrot -q 70 quality.png
Чтобы снять область экрана, пишем:
scrot -s file.png
при клике мышкой делается скриншот окна, на которое вы нажали, и если зажать кнопку, то можно выделить область (спасибо тов. Imposeren). Эти и другие опции можно найти в разных интересных статьях.

Ну и наконец
Ъ™ UNIX® way
Для самых тру юниксвеистых орлов, с помощью Vim/Emacs создаём скрипт следующего содержания:
#!/bin/bash
#usage name_script delay_second
if [ $1 ]; then
sleep $1
fi
FILE_NAME="screenshot";
IMG_FORMAT="jpg"; #png, jpg, bmp, gif, tiff
xwd -screen -root > $FILE_NAME.xwd;
convert $FILE_NAME.xwd -type TrueColor $FILE_NAME.$IMG_FORMAT;
rm $FILE_NAME.xwd;
Запуск скрипта даёт скриншот screenshot.jpg. Реализация пренадлежит бессмертному перу тов. kraftello, за что ему огромное спасибо.


Ссылки в тему:
Темой скриншотов в Linux озадачивались в разных интернетах и кое-что смогли раскопать, так что автор этих строк тоже духовно обогатился. Буду благодарен за другие идеи.

25 комментариев:

  1. Вообще-то в Убунтейском Гноме клавиша "Print Screen/SysRq" делает скриншоты, по умолчанию там подвешен gnome-screenshot, а gnome-screenshot --interactive дает опции достаточные для скриншотов, например задержку...

    ОтветитьУдалить
  2. Ещё есть scrot. Очень удобный консольный инструмент. :)
    Когда разворачивал статью в ридере, думал, про него.

    ОтветитьУдалить
  3. Да-да-да! scrot молодец! Еще он умеет именовать файлы по маске (с датой, номером, временем и т.п.). Делать скриншоты с задержкой, отображать обратный отсчёт при использовании задержки, применять комманду на сделанную картинку, делать сники конкретного окна, или прямоугольной области

    ОтветитьУдалить
  4. Я использую xfce4-screenshooter. Тоже умеет экран, окно, область, задержку, вроде хватает. В .icewm/key дописал
    key "Print" xfce4-screenshooter
    и он замечательно запускается по кнопке PrintScreen.

    ОтветитьУдалить
  5. @paulus комментирует...
    Вообще-то в Убунтейском Гноме клавиша "Print Screen/SysRq" делает скриншоты
    Шут его знает, но у него почему-то не работала. Вот меня и спросили.

    gnome-screenshot --interactive
    Спасибо, добавил в пост.

    @Von комментирует...
    Ещё есть scrot. Очень удобный консольный инструмент.
    Добавлено. Спасибо, я про него не знал :-)

    @Ярослав Клюев комментирует...
    scrot молодец!
    Это точно. Я просто в консоли всегда снимал скриншоты imagemagick-ом.

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

    Спасибо уважаемым комментаторам за ценные сведения. Вот что значит обзор писать: обязательно его дополнят :-)

    ОтветитьУдалить
  6. В Lubuntu работает Print screen и кидет скриншот в home

    ОтветитьУдалить
  7. К духу духа духовных предков UNIX все-таки ближе нечто такое:
    xwd -root | xwdtopnm | pnmtopng > $@

    кст, почему-то не получается комментировать, используя OpenID

    ОтветитьУдалить
  8. Кстати, на данной картинке показан KscreenShot
    всё таки, наверное, ksnapshot

    ОтветитьУдалить
  9. @Пашко комментирует...
    В Lubuntu работает Print screen и кидет скриншот в home
    Верю, но в том конкретном случае не работало. Ну и потом, этот пост ведь не про убунту.

    @su6s комментирует...
    К духу духа духовных предков UNIX все-таки ближе нечто такое
    Ну это совсем злобный юниксвей. :-)

    кст, почему-то не получается комментировать, используя OpenID
    У меня, кстати, блоггеровский OpenID тоже никто не принимает. Симметрия.

    @Страшилка комментирует...
    есть еще clip2net :)
    ---> beta... 10.1 Mb (!).
    Ох шит! :-)) Оно ещё и бинарное! Нет пути.
    Но за ссылку спасибо всё равно.

    @Gregory комментирует...
    всё таки, наверное, ksnapshot
    Точно, позор на мою лысую голову. Пофiксiв.

    ОтветитьУдалить
  10. Отвечу про скрот окна и области.
    scrot -s file.png
    при клике мышкой — делается скрин окна на которые вы нажали, если зажать кнопку, то можно выделить область. Правда у меня получались изображение всё-равно размером с весь экран, но то что не было выбрано было цвета (#000000 с НЕпрозрачностью 00)

    ОтветитьУдалить
  11. @virens написан на питоне, как сказал прогер бинарник было проще всего сделать для наибольшего охвата семейства линуксовых
    то что бетка - не страшно, она почти готова, за исключением того что не сохраняет путь к фолдеру в который был сохранен предыдущий скриншот, но это мелочь ...
    PS. не за что :)

    ОтветитьУдалить
  12. кстати в добавление к Shutter, один из плюсов: он умеет делать скриншот страницы по указанному URL-у не открывая браузер))) ну и еще писать сделанные скрины на диск, постить в empathy, e-mail (если использовать почтовую программу), писать на CD/DVD, передавать по Bluetooth (OBEX Push), и сохранять на съемные носители, при этом может (по желанию пользователя, естественно) все это дело заархивировать :)

    ОтветитьУдалить
  13. #!/bin/bash
    #usage name_script delay_second
    if [ $1 ]; then
    sleep $1
    fi
    FILE_NAME="screenshot";
    IMG_FORMAT="jpg"; #png, jpg, bmp, gif, tiff
    xwd -screen -root > $FILE_NAME.xwd;
    convert $FILE_NAME.xwd -type TrueColor $FILE_NAME.$IMG_FORMAT;
    rm $FILE_NAME.xwd;

    ОтветитьУдалить
  14. KSnapshot - наше всё. Ещё был бы такой же выбор программ для скринкаста...

    ОтветитьУдалить
  15. Живет у меня уже давненько прибамбас gkrell в правой части экрана,
    так вот для него есть #apt-get install gkrellshoot и потом настраиваем его в gkrell и появляется кнопочка "Shoot" позволяющая в зависимости от настроек захватить или весь экран или только указанное окошко.

    OffTopic:
    Но кроме этого меня заинтересовал еще вопрос настройки разрешения и обновления в Debian на который я пока не смог ответить. Вчера мучался, правил xorg.conf но не помогало пока наконец не попал в Система->Параметры->Разрешение экрана и не выбрал то что направил а ведь перед этим правил из консоли и тупо жмал Ctrl-Alt-Backspace в Login-е GDM надеясь что после перезагрузки X получу желаемое. Хотел на эту тему поконтачить с автором блога (и на эту тему можно было записку накропать) но увы контактов с ходу тут не нашел, потому развожу оффтопик - вдруг да будет читан. Пока непонятна идеология того что где и как влияет на разрешение и цастоту экрана и где хранятся настройки. Откуда берется разрешение и частота для логин скрина, у каждого из пользователей оно одинаковое или такое что выставил один из них? (пока не проверил) или у каждого то что он поставил себе?

    P.S. Решительно не понимаю как подписаться на этой страничке, потому посылаю как аноним.

    ОтветитьУдалить
  16. 2 Анонимный: либо используя аккаунт из того что предлагает выпадушка
    http://clip2net.com/clip/m26727/1282220433-clip-23kb.jpg
    либо так как сейчас есть
    а gkrell позволяет постить на удаленный сервер скрины?

    ОтветитьУдалить
  17. А у меня периодически возникает потребность снять скриншот окна активного приложения с открытым меню. PrtScr обычно не срабатывает в этих случаях. Есть возможность как-то это сделать?

    ОтветитьУдалить
  18. @Imposeren комментирует...
    Отвечу про скрот окна и области.
    Спасибо. Заодно в пост добавил.

    @Страшилка комментирует...
    @virens написан на питоне
    Неправда, виренс написан на чистом ANSI C :-)

    то что бетка - не страшно, она почти готова
    Ждём релиза!

    @Страшилка комментирует...
    кстати в добавление к Shutter, один из плюсов: он умеет делать скриншот страницы по указанному URL-у не открывая браузер
    Обалдеть. А я про него ничего не слышал. Всё гимпом делал. Вот она, сила комментаторская!

    ну и еще писать сделанные скрины на диск, постить в empathy, e-mail (если использовать почтовую программу), писать на CD/DVD, передавать по Bluetooth (OBEX Push)
    /me тихо уполз под стул от таких возможностей. Ну ничего ж себе...

    @kraftello комментирует...
    Круто. Вставил в пост. Спасибо!

    @Антон комментирует...
    KSnapshot - наше всё
    А как же гимп?

    Но кроме этого меня заинтересовал еще вопрос настройки разрешения и обновления в Debian
    У меня самый свежак - это Ленни. На старом ноуте до сих пор Etch. Так что в вопросах нового софта я как бы не очень в курсе :-))

    Хотел на эту тему поконтачить с автором блога (и на эту тему можно было записку накропать)
    Поконтачить можно. Добавил кнопку в главном меню (сверху блога). Но это не кнопка экстренного вызова автора :-)

    Меня тут мой шеф обрадовал: а давай, говорит, Майкл, ты пройдёшь курс по теории управления. Ну и зачислил меня на него. Так что я теперь хожу на лекции и должен буду сдавать экзамены в Ноябре. Курс продвинутый, а я теорию управления не изучал никогда. Так что мне за месяц (до первого Quiz) надо пройти курс почти за год.

    Это к вопросу "поконтачить" и "записку написать" :-)

    Пока непонятна идеология того что где и как влияет на разрешение и цастоту экрана и где хранятся настройки.
    Они должны быть в xorg.conf, и если какой-то #$@%@ из разработчиков иксов сделает всю настройку через этот грёбаный HAL, я лично к нему приеду с юбилейным паяльником и подробно растолкую ему о том, что это очень нехорошо делать :-)

    P.S. Решительно не понимаю как подписаться на этой страничке, потому посылаю как аноним.
    Не рубите cookies и javascript, они нужны для подписи. Но анонимные комменты принимаются. Только виагру не предлагайте. :-)

    @Malky комментирует...
    А у меня периодически возникает потребность снять скриншот окна активного приложения с открытым меню.
    Я делаю так: запускаю гимп, прошу его сделать скриншот и выставляю задержку побольше (секунд 10). Потом быстро открываю нужное меню, пока из гимпа не вылетела птичка. Костыль, но он работает :-)

    ОтветитьУдалить
  19. Т.к. сей программ планируется повесить на горячие клавиши, то консольные отвалились по определению. Остановился на screengrab, тем более он ничего дополнительного за собой не потянул. Но у меня gentoo, как оно в дебиане называется, я не знаю, уж не взыщите.
    Домашняя страничка: http://code.google.com/p/screengrab-qt/

    ОтветитьУдалить
  20. Я делаю скриншоты с помощью программки ScreenshotMaker. Удобно и просто) давно уже ей пользуюсь и всем советую) Если что, заходите, это сайт программы: http://fastosoft.ru/, там и скачать можно)

    ОтветитьУдалить
  21. @shurutov комментирует...
    Остановился на screengrab, тем более он ничего дополнительного за собой не потянул.
    Ещё один велосипед в моей коллекции. Спасибо!

    @Анонимный комментирует...
    Я делаю скриншоты с помощью программки ScreenshotMaker.
    Анонимус, спасибо, конечно, что зашёл и поделился, но блог таки о Дебиан ГНУ/ЛИНУПС. :-) А то для винды, которая не гну и не тру. Да ещё "профешнл вершн бай нау". Некомильфо. Но так и быть.

    ОтветитьУдалить
  22. А есть какая-нибудь программа для снятия скриншота действующего окна с прокруткой,то есть чтобы сохранить все содержимое окна,а не только то,что видно в момент съемки?

    ОтветитьУдалить
  23. может кому пригодится
    scrot -s '%Y-%m-%d-%H-%M-%S_$wx$h.png' -e 'mv $f ~/screen/' участок, с именем — датой, в папку

    ОтветитьУдалить
  24. а как сделать скриншот выделенной области с прокруткой?

    ОтветитьУдалить