ascii-photobooth/webcam2ascii.sh

43 lines
1.5 KiB
Bash
Executable File

#/bin/bash
#
# Captures a frame and converts it to ascii art.
# Reads defaults from webcam.conf and ascii.conf. BRIGHTNESS/EXPOSURE env
# vars (set by exec-cycle.sh's live preview controls) override webcam.conf.
dir="$(dirname "$0")"
[ -f "$dir/webcam.conf" ] && source "$dir/webcam.conf"
[ -f "$dir/ascii.conf" ] && source "$dir/ascii.conf"
: "${RESOLUTION:=640x480}"
: "${JPEG_QUALITY:=85}"
: "${BRIGHTNESS:=${DEFAULT_BRIGHTNESS:-auto}}"
: "${EXPOSURE:=${DEFAULT_EXPOSURE:-auto}}"
: "${BRIGHTNESS_CONTROL:=Brightness}"
: "${EXPOSURE_CONTROL:=Exposure (Absolute)}"
: "${COMPLEX:=false}"
: "${GRAYSCALE:=false}"
: "${NEGATIVE:=false}"
: "${FLIP_X:=false}"
: "${FLIP_Y:=false}"
set_opts=()
[ "$BRIGHTNESS" != "auto" ] && set_opts+=(--set "${BRIGHTNESS_CONTROL}=${BRIGHTNESS}%")
[ "$EXPOSURE" != "auto" ] && set_opts+=(--set "${EXPOSURE_CONTROL}=${EXPOSURE}%")
conv_opts=()
[ -n "$WIDTH" ] && conv_opts+=(--width "$WIDTH")
[ -n "$HEIGHT" ] && conv_opts+=(--height "$HEIGHT")
if [ -n "$CHAR_MAP" ]; then
conv_opts+=(--map "$CHAR_MAP")
elif [ "$COMPLEX" = "true" ]; then
conv_opts+=(--complex)
fi
[ "$GRAYSCALE" = "true" ] && conv_opts+=(--grayscale)
[ "$NEGATIVE" = "true" ] && conv_opts+=(--negative)
[ "$FLIP_X" = "true" ] && conv_opts+=(--flipX)
[ "$FLIP_Y" = "true" ] && conv_opts+=(--flipY)
fswebcam -q --no-banner -r "$RESOLUTION" --jpeg "$JPEG_QUALITY" "${set_opts[@]}" web-cam-shot.jpg &> /dev/null
ascii-image-converter web-cam-shot.jpg "${conv_opts[@]}" | tee ascii-img.txt