48 lines
		
	
	
		
			753 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			753 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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
 | 
