43 lines
1.5 KiB
Bash
Executable File
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
|
|
|