Làm cách nào để sao chép hình ảnh vào bảng tạm từ tệp bằng cách sử dụng dòng lệnh?


23

Tôi muốn viết một tập lệnh để lấy một tập tin hình ảnh, chia tỷ lệ 50% và đặt nó vào bảng tạm để có thể dán dễ dàng. Cái tôi bị mắc kẹt là làm thế nào để đặt một hình ảnh vào clipboard.

Tôi biết về xclip, nhưng AFAICS chỉ liên quan đến văn bản. Có thể có một hình ảnh trên clipboard mà không có ứng dụng tạo ra nó ngồi xung quanh? - Xin lỗi tôi không chắc chắn về cách thức hoạt động của clipboard!

CHỈNH SỬA

Nhờ câu trả lời của Florian bên dưới, tôi đã có thể đạt được điều mình muốn, đó là chụp ảnh màn hình và tự động phóng to nó lên tối đa 600px (ví dụ để dán vào email). Vấn đề tiếp theo tôi gặp phải là Thunderbird sẽ không chấp nhận image/pngtừ bảng tạm. Tôi đã làm tròn điều này bằng cách chuyển đổi nó thành text/htmlmột dataurl. Đây là mã của tôi trong trường hợp bất cứ ai thấy nó hữu ích:

#!/bin/bash
TMP=/tmp/screenshot.png
function screenshotfail {
  notify-send -u low -i image "Screenshot failed."
  exit
}
# Take screenshot
gnome-screenshot -a -b -p -f "$TMP" || screenshotfail
# Ensure it's max 600px wide
mogrify -resize '>600x' "$TMP" || screenshotfail
# optimise the png if optipng is installed.
which optipng >/dev/null && optipng "$TMP"

# Copy to clipboard.
#
# This is what does not work for Thunderbird:
#   xclip -selection clipboard -t image/png <"$TMP" || screenshotfail
# But this does:
echo "<img src='data:image/png;base64,"$(base64 -w0 "$TMP")"' />" | \
  xclip -selection clipboard -t text/html || screenshotfail

# Remove the temp file.
rm -f "$TMP"

# Notify user.
notify-send -u low -i image "600px screenshot copied to clipboard"

Có vẻ như một bản sao của: unix.stackexchange.com/questions/30093/ triệt
Champ

Câu trả lời:


32

Sử dụng -ttùy chọn để chỉ định loại nội dung, như

xclip -selection clipboard -t image/png -i example.png

-tkhông hoạt động trên phiên bản xclip 0.12 của tôi
Irfan

@ Power-Inside: Hoạt động với tôi với xclip 0.12 vào ngày 16.10
Florian Diesch

1
để làm việc này vào ngày 17.10, tôi đã phải làm điều này:xclip -selection clipboard -t image/png -o > example.png
Anake

Hoạt động với phiên bản xclip 0.12 trên Ubuntu 16.04.5 LTS của tôi
Champ

Chỉ hoạt động cho các môi trường GTK như Gnome, không hoạt động cho các môi trường Qt như KDE / plasma hoặc LXQT.
noraj
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.