Làm cách nào tôi có thể chụp ảnh màn hình từ cửa sổ, với lề có thể tùy chỉnh


17

Tôi cần một công cụ sẽ làm như sau: chọn một cửa sổ, sẽ tạo một ảnh chụp màn hình của cửa sổ đó với phần đệm x , như trong hình ảnh sau:

Vì vậy, trong hầu hết các trường hợp x sẽ bằng y , nhưng đôi khi tôi cần các khoảng cách khác nhau.

Làm thế nào để tạo một ảnh chụp màn hình như vậy, tự động? Tôi đã thử với Shutter, nhưng tôi không thể tìm thấy một thiết lập như vậy ở đó. Tuy nhiên, nó hỗ trợ các plugin. Vì vậy, một plugin có thể được cắt cửa sổ theo cách này.


Tôi có thể hỏi công cụ nào bạn đã sử dụng để tạo ra mockup đó không? Trông khá đẹp :)
Seth

1
@Seth quy tắc InkScape! Tôi không phải là một chuyên gia, nhưng tôi thích tạo ra những thứ như thế này cho các dự án của mình. Nó trông tốt cho mắt. :-) Dưới đây là phiên bản PNG , và một SVG . Kho lưu trữ này chứa những thứ khác được tạo bằng InkScape.
Ionica Bizău

Câu trả lời:


19

Script, sử dụng Shutter

Tôi không nghĩ nó tồn tại, nhưng giống như bất cứ điều gì, nó có thể được thực hiện.

Nếu bạn tạo tập lệnh bên dưới có sẵn dưới tổ hợp phím (giải thích thêm bên dưới), một cửa sổ sẽ bật lên, cho phép bạn đặt lề của ảnh chụp màn hình của bạn ở bên trái, phải, trêndưới , cách nhau bởi một khoảng trắng:

nhập mô tả hình ảnh ở đây

kết quả:

nhập mô tả hình ảnh ở đây

hoặc là:

nhập mô tả hình ảnh ở đây

kết quả:

nhập mô tả hình ảnh ở đây

Vân vân.

Tôi đặt mặc định là 30 px, nhưng bạn có thể đặt bất kỳ giá trị mặc định nào (xem bên dưới).

Cách sử dụng

  • Kịch bản sử dụng Shutterwmctrl. Giả sử Shutterđã có trên hệ thống của bạn (vì bạn đã đề cập đến nó), hãy cài đặt wmctrl:

    sudo apt-get install wmctrl
    

    NB Nếu bạn sử dụng Kubfox , Zenitykhông được cài đặt theo mặc định:

    sudo apt-get install zenity
    
  • Sao chép tập lệnh dưới đây vào một tập tin trống. Nếu bạn muốn, bạn có thể thay đổi giá trị "mặc định" trong dòng của tập lệnh:

    `arg =`
    
  • lưu nó như là custom_screenshot.py.

  • Thêm tập lệnh vào tổ hợp phím tắt: chọn: Cài đặt hệ thống> "Bàn phím"> "Phím tắt"> "Phím tắt tùy chỉnh". Nhấp vào "+" và thêm lệnh:

    python3 /path/to/custom_screenshot.py
    

Ghi chú

Kịch bản sử dụng wmctrlđể xác định vị trí của cửa sổ. Tuy nhiên, trên các trình quản lý cửa sổ khác nhau, đầu ra của wmctrl -lGlệnh cho thấy sự khác biệt nhỏ ở vị trí y của cửa sổ. Những khác biệt này được loại bỏ bởi giá trị, được đặt trong deviation=dòng của tập lệnh. Giá trị được đặt hiện tại (0) phù hợp với Unity và KDE.

Kịch bản cũng được kiểm tra và hoạt động tốt XfceGnome, nhưng giá trị cần phải được thay đổi sau đó, như được giải thích trong phần đầu của tập lệnh.

Kịch bản

#!/usr/bin/env python3
import subprocess
import time

"""
On different window managers, the window geometry as output of wmctrl differs slightly.
The "deviation" should compensate these differences. Most likely appropriate (tested) settings:
Unity: 0, Gnome: -36, Xfce (Xubuntu): -26, KDE (Kubuntu): 0
"""
#---
deviation = 0
#---
get = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8")
try:
    arg = get('zenity --entry --entry-text "30 30 30 30" --text "border left, right, top, bottom" --title "Screenshot margins"').strip().split()
except:
    pass
else:
    time.sleep(0.5)
    # frontmost window pos
    frontmost = [l.split()[4] for l in get("xprop -root").splitlines() if "ACTIVE_WINDOW(WINDOW)" in l][0].replace(",", "")
    frontmost = frontmost[:2]+"0"+frontmost[2:]
    f_data = [l.split() for l in get("wmctrl -lG").splitlines() if frontmost in l][0][2:6]
    # extent
    xt_data = get("xprop -id "+frontmost).split()
    xt_i = xt_data.index("_NET_FRAME_EXTENTS(CARDINAL)")
    xt = [int(n.replace(",", "")) for n in xt_data[xt_i+2:xt_i+6]]
    # set data for screenshot command
    x = str(int(f_data[0])-int(arg[0])-xt[0])
    y = str(int(f_data[1])-int(arg[2])-xt[2]+deviation)
    w = str(int(f_data[2])+int(arg[0])+int(arg[1])+xt[0]+xt[1])
    h = str(int(f_data[3])+int(arg[3])+int(arg[2])+xt[2]+xt[3])

    command = "shutter -s="+(",").join([x,y,w,h])+" -e"
    subprocess.call(["/bin/bash", "-c", command])

3
Tôi không nghĩ nó tồn tại - Bây giờ nó tồn tại! Cảm ơn bạn rất nhiều!
Ionică Bizău

1
@ IonicăBizău bạn được chào đón! Cảm ơn câu hỏi, nó rất vui để làm. Tôi đã thực hiện một chỉnh sửa nhỏ trên phần giải thích cài đặt mặc định.
Jacob Vlijm

1
@ IonicăBizău tìm thấy (và đã sửa) một lỗi trong hình học.
Jacob Vlijm

2
Đẹp đẹp đẹp! Tôi đặt nó là trạng thái mà tôi chạy khi nhấn nút đặc biệt trên máy tính xách tay ASUS của mình. :-)
Ionică Bizău

2

Bạn cũng có thể sử dụng kết hợp các nút Shift và nút PrtScr để chụp ảnh màn hình của một khu vực cụ thể với kích thước do người dùng xác định.

Chỉ cần nhấn tổ hợp và sử dụng con trỏ đã sửa đổi (nó trở nên giống với dấu cộng) để chọn khu vực để chụp màn hình.


Thông thường, tôi không thể điều khiển tay để đặt các lề này một cách chính xác. :-) Nhưng +1 cho phím tắt này, tôi không biết nó.
Ionică Bizău 3/2/2015

2

Bạn có thể chụp ảnh màn hình với scrottiện ích chụp màn hình dòng lệnh:

scrot -s  

hoặc là

scrot -ub -d 5  

Lệnh thứ hai đặt một đường viền xung quanh cửa sổ đã chọn, có chiều rộng đẹp so với kích thước của cửa sổ. Các -d 5tùy chọn là viết tắt của sự chậm trễ và mang đến cho bạn một sự chậm trễ 5 giây để chọn cửa sổ được trong ảnh chụp màn hình.

Cài đặt với cái này:

sudo apt-get install scrot

Tham khảo: Hướng dẫn sử dụng Ubuntu -

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.