add tshirt filter - annna - Annna the nice friendly bot.
(HTM) 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
(HTM) 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"