commit 3a8a311df6cda82b051d1f3e670d23166f09e32e Author: alban Date: Sat Oct 26 23:55:00 2019 +0200 [init] diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5e28f14 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +images +logs +synthesis +*swp diff --git a/img_generator.sh b/img_generator.sh new file mode 100755 index 0000000..e04bda3 --- /dev/null +++ b/img_generator.sh @@ -0,0 +1,55 @@ +#!/bin/bash +usage(){ + cat << HEREDOC + $0 [-h] [MAXFILE] [TAG] + This script loads and merges images based on random words + -h this help + MAXFILE Limit number of images to compose + TAG Don't pick tag randomly +HEREDOC + exit 1 +} +panic(){ echo $@; exit 2; } +[[ $1 == "-h" ]] || [[ $1 == --help ]] && usage + +cd $( dirname $0 ) +MAXFILE=${1:-20} +TAG=${2} +TMPFILE=$(mktemp) + +# Search images +for i in {1..99}; do + RAND=$( echo | awk ' { srand(); print int(rand() * 234937 ) } ') + WORD=$(awk "NR==$RAND" /usr/share/dict/words); + [ -n "$TAG" ] && WORD=$TAG + URL="https://api.flickr.com/services/feeds/photos_public.gne?tags=$WORD&tagmode=any"; + IMGLIST=($(curl -s "$URL" | grep '"enclosure"'| sed -r 's_^.*href="(.*jpg)".*$_\1_' | grep "^http")) + [ $i -eq 2 ] && [ -n "$TAG" ] && panic "Failed to load tag" ] + [ 2 -gt ${#IMGLIST[@]} ] && continue + break; +done + +# Download images +mkdir -p images +for i in $( seq 0 $(( ${#IMGLIST[@]} -1 )) ); do + IMGURL="${IMGLIST[$i]}" + [[ ${IMGLIST[$i]} =~ ^http ]] || continue + wget -q "$IMGURL" -P images + [[ O -eq $? ]] && FILELIST+=(images/$(basename ${IMGLIST[$i]} ) ) + [ $i -gt $(( $MAXFILE -2 )) ] && break +done + +# Create synthetic image +mkdir -p synthesis +SYNTH_NAME="synthesis/$(date +%s)-$WORD.jpg" +SRC=${FILELIST[0]} +#copy the first image +cp $SRC $SYNTH_NAME +for i in $( seq 1 $(( ${#FILELIST[@]} -1 )) ); do + composite ${FILELIST[$i]} $SYNTH_NAME -gravity center -compose difference "$SYNTH_NAME" +done + +mkdir logs +echo "File generated with word $WORD and ${#FILELIST[@]} images: file://$PWD/$SYNTH_NAME" | tee "logs/$(basename $SYNTH_NAME)" +echo "${FILELIST[@]}" | tee -a "logs/$(basename $SYNTH_NAME)" +