Я хотел бы написать скрипт для файла изображения, масштабировать его на 50% и поместить в буфер обмена, чтобы его можно было легко вставить. Я застрял в том, как поместить изображение в буфер обмена.
Я знаю xclip, но AFAICS, который имеет дело только с текстом. Возможно ли иметь изображение в буфере обмена без приложения, которое его сгенерировало? - Извините, я не уверен во внутренних принципах работы буфера обмена! автоматически масштабировать его до 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"
Используйте -t
опция указать тип контента, как
xclip -selection clipboard -t image/png -i example.png
for
+sed
:head -n -N
, где верхний регистрN
является количеством строк, которые будут удалены. stackoverflow.com/a/13380679/711006 – Melebius 5 September 2017 в 03:06