Я хотів би написати сценарій, щоб взяти файл зображення, масштабувати його на 50% і помістити в буфер обміну, щоб його можна було легко вставити. Біт, який я застряг, - це як розмістити зображення в буфері обміну.
Я знаю xclip, але AFAICS, який стосується лише тексту. Чи можна мати зображення в буфері обміну без програми, яка його генерувала, сидячи навколо? - Вибачте, я не впевнений у внутрішніх справах роботи буфера обміну!
EDIT
Завдяки відповіді Флоріана нижче, я зміг досягти того, що хотів, - зробити знімок екрана і автоматично масштабувати його до максимуму 600 пікс. (Наприклад, для вставки в електронну пошту). Наступною проблемою, з якою я стикався, було те, що Thunderbird не прийме image/png
з буфера обміну. Я отримав навколо цього шляхом перетворення його text/html
з data
URL. Ось мій код на випадок, якщо хтось вважає його корисним:
#!/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"