add tshirt filter - annna - Annna the nice friendly bot. HTML git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/ DIR Log DIR Files DIR Refs DIR Tags DIR README --- DIR commit 92d55bc9f27aaa4426da461601a42c7635ad8071 DIR parent b222826ef4b61793d0324c90da2316948cbec91d HTML Author: Anders Damsgaard <anders@adamsgaard.dk> Date: Tue, 17 Jan 2023 09:01:30 +0100 add tshirt filter Signed-off-by: Annna Robert-Houdin <annna@bitreich.org> Diffstat: M annna-message-common | 8 ++++++-- A tshirt-design | 75 +++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 2 deletions(-) --- DIR diff --git a/annna-message-common b/annna-message-common @@ -930,6 +930,7 @@ case "${text}" in "${ircuser}, please technodrugs #"*|\ "${ircuser}, please thin #"*|\ "${ircuser}, please torture #"*|\ +"${ircuser}, please tshirt #"*|\ "${ircuser}, please trumpapprove #"*|\ "${ircuser}, please wat #"*|\ "${ircuser}, please widen #"*|\ @@ -949,7 +950,7 @@ case "${text}" in # outfile and outpath filtering for the cache. case "${filter}" in - antidepressant|ritual|putin) + antidepressant|ritual|putin|tshirt) outfile="${outfile%.*}.jpg" outpath="${outpath%.*}.jpg" ;; @@ -979,7 +980,7 @@ case "${text}" in if [ -s "${outpath}" ]; then annna-say -s "${server}" -c "${channel}" "${user}, gopher://bitreich.org/9/memecache/filter/${outfile}" - exit 0 + exit 0 fi case "${filter}" in @@ -992,6 +993,9 @@ case "${text}" in putin) putin-os "${inpath}" "${outpath}" 2>&1 >/dev/null ;; + tshirt) + tshirt-design "${inpath}" "${outpath}" 2>&1 >/dev/null + ;; *) ffmpeg-effect "${filter}" "${inpath}" "${outpath}" 2>&1 >/dev/null ;; DIR diff --git a/tshirt-design b/tshirt-design @@ -0,0 +1,75 @@ +#!/bin/sh + +mediadir=/home/annna/bin/modules/filter-media + +die() { + printf '%s\n' "$1" >&2 + exit 1 +} + +if test $# -ne 2; then + die "usage: ${0##*/} <file> <outimagefile>" +fi + +mimetype="$(file -ib "$1")" +case "$mimetype" in + video/*) + in="$(mktemp).jpg" + ffmpeg -i "$1" -frames:v 1 "$in";; + image/*) + in="$1";; + *) + die "file type '${mimetype}' not supported";; +esac + +shirt="$(shuf -n 1 -e "${mediadir}"/tshirt*.jpg)" + +case "$shirt" in + */tshirt1.jpg) + size=400x600 + geometry=+0+50 + rotate=-3 ;; + */tshirt2.jpg) + size=350x400 + geometry=-10-75 + rotate=0 ;; + */tshirt3.jpg) + size=180x350 + geometry=+0+50 + rotate=-2 ;; + */tshirt4.jpg) + size=200x450 + geometry=-10+50 + rotate=0 ;; + */tshirt5.jpg) + size=200x450 + geometry=+5+100 + rotate=0 ;; + */tshirt6.jpg) + size=300x450 + geometry=+5-50 + rotate=0 ;; + */tshirt7.jpg) + size=400x550 + geometry=+5+0 + rotate=0 ;; + */tshirt8.jpg) + size=300x500 + geometry=-15+80 + rotate=-2 ;; + *) + die "unknown tshirt: $tshirt";; +esac + +convert "$shirt" \ + \( "${in}" \ + -matte \ + -virtual-pixel transparent \ + -background transparent \ + -resize "$size" \ + -transparent white \ + -rotate "$rotate" \ + \) \ + -geometry "$geometry" \ + -gravity center \ + -composite "$2"