#/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