48 lines
753 B
Plaintext
48 lines
753 B
Plaintext
|
#!/bin/sh
|
||
|
|
||
|
BACKGROUND="#0A0A0A"
|
||
|
THUMBSIZE=64
|
||
|
umask 077
|
||
|
|
||
|
case "$#" in
|
||
|
(2)
|
||
|
;;
|
||
|
(*)
|
||
|
printf "usage: %s file\n" "$0" >&2
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
case "$2" in
|
||
|
(*/*)
|
||
|
mkdir -p "${2%/*}"
|
||
|
;;
|
||
|
(*)
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
case "${1##*.}" in
|
||
|
png|jpg|jpeg|gif|xpm|xbm|ppm)
|
||
|
convert "${1}[0]" -background "$BACKGROUND" -flatten \
|
||
|
-define filename:literal=true -format ppm \
|
||
|
-thumbnail "${THUMBSIZE}x${THUMBSIZE}" \
|
||
|
"${2}"
|
||
|
;;
|
||
|
webm|mp4|mkv|ogv)
|
||
|
ffmpegthumbnailer -c png -i "${1}" -o - -s "${THUMBSIZE}" \
|
||
|
| convert - -define filename:literal=true -format ppm \
|
||
|
"${2}"
|
||
|
;;
|
||
|
svg)
|
||
|
rsvg-convert -h "${THUMBSIZE}" "${1}" \
|
||
|
| convert - -format ppm "${2}"
|
||
|
;;
|
||
|
pdf)
|
||
|
pdftoppm -f 1 -l 1 -scale-to "${THUMBSIZE}" -singlefile \
|
||
|
"${1}" "${2%.ppm}"
|
||
|
;;
|
||
|
*)
|
||
|
exit 1
|
||
|
;;
|
||
|
esac 2>/dev/null
|