mirror of
https://github.com/TheAnachronism/docspell.git
synced 2024-11-13 02:31:10 +00:00
75 lines
1.6 KiB
Bash
75 lines
1.6 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
#
|
||
|
# Little tool to help with doing screenshots.
|
||
|
#
|
||
|
# Run: ./screenshot.sh output.png
|
||
|
#
|
||
|
# Then select a window. It will create a screenshot from that window,
|
||
|
# cut (optionally) some pixels (removes the browser bar) and then
|
||
|
# resizes it to some maximum width.
|
||
|
|
||
|
set -e
|
||
|
|
||
|
# input file
|
||
|
file=/tmp/screenshot.png
|
||
|
|
||
|
# final output file
|
||
|
out=/tmp/screenshot-out.png
|
||
|
|
||
|
# image dimension ratio w:h
|
||
|
ratio=${RATIO:-"16:9"}
|
||
|
# cut that much from the top to remove browser bar (my firefox settings)
|
||
|
top_cut=${TOP_CUT:-85}
|
||
|
# maximum width of final image
|
||
|
maxw=${MAXW:-1200}
|
||
|
# time to wait in secs
|
||
|
waitsec=${WAIT_SEC:-3}
|
||
|
|
||
|
|
||
|
#### Main ############
|
||
|
work=/tmp/screenshot-work.png
|
||
|
|
||
|
debug() {
|
||
|
(1>&2 echo "$@")
|
||
|
}
|
||
|
|
||
|
scrot -s -c -d $waitsec "$file" 1>&2
|
||
|
cp "$file" "$work"
|
||
|
|
||
|
|
||
|
read -r w h < <(identify -verbose $file |\
|
||
|
grep "Geometry:" | \
|
||
|
cut -d':' -f2 | \
|
||
|
cut -d'+' -f1 | \
|
||
|
tr 'x' ' ' | xargs)
|
||
|
debug "Original size: ${w}x${h}"
|
||
|
|
||
|
read nw nh < <(echo $ratio | tr ':' ' ')
|
||
|
|
||
|
# remove browser bar from top
|
||
|
((h=$h - $top_cut))
|
||
|
|
||
|
# create height to match ratio
|
||
|
((newH=($w * $nh) / $nw))
|
||
|
|
||
|
if [ $newH -gt $h ]; then
|
||
|
debug "Cropping to $w x $h"
|
||
|
debug "Cannot crop to ratio without reducing width"
|
||
|
convert -crop ${w}x${h}+0+${top_cut} "$work" "$out"
|
||
|
else
|
||
|
debug "Cropping to $w x $h"
|
||
|
convert -crop ${w}x${newH}+0+${top_cut} "$work" "$out"
|
||
|
fi
|
||
|
cp "$out" "$work"
|
||
|
|
||
|
debug "Resize to max width $maxw"
|
||
|
convert -resize $maxw "$work" "$out"
|
||
|
rm -f "$work" "$file"
|
||
|
|
||
|
if [ -z "$1" ]; then
|
||
|
echo "$out"
|
||
|
else
|
||
|
mv "$out" "$1"
|
||
|
echo "$1"
|
||
|
fi
|