Autogenerate “PopArt”

This one downloads images from google and applies imagemagick filters to them to convert them in pseudo-PopArt-ish images

#!/bin/bash
set -x

red="#B0232A"
green="#009543"
blue="#003B6F"
yellow="#EADB1B"
resolution=1280

D=/cygdrive/c/Users/Roberto_Dircio/Desktop/popart
mkdir -p $D
cd $D
#rm -fR $D/*

function getimages {
QUERY=`shuf -n 1 /scripts/POPART/wallpaper-subjects.txt| sed 's/ /%20/g'`
for page in 1 2 3 4;do
#for page in 1;do
        i=$(((${page}-1)*21))
        curl -m 2 -A "Mozilla/3.0 (compatible; AvantGo 3.2)" "http://images.google.com/images?as_q=${QUERY}&safe=off&start=${i}&as_st=y&tbm=isch&tbs=isz:m,ic:white,iar:s" 2>/dev/null |sed -e 's/>/>\n/g' | awk '{s=substr($0,index($0,"imgurl="),index($0,"&"));print substr(s,1,index(s,"&")-1)}' | grep imgurl|sed 's/imgurl=//g'| egrep -v 'starkeith|gstatic|sca${red}monkeys|tripod|flickr'|sed 's/2520/20/g' | while read url;do
(
                F=`echo $url | awk -F'\/' '{ print $NF }'`
                t=`echo "${F}"| tr -d "[:punct:]"|sed "s/;//g;s/:/_/g;s/\*//g;s/ó/o/g;s/í/i/g;s/ú/u/g;s/á/a/g;s/é/e/g;s/ñ/n/g;s/\&/And/g;s/-/_/g;s/%//g;s/ /_/g;s/(//g;s/)//g;s/\[//g;s/\]//g;s/'//g;s/,/_/g" | tr -s '_'|tr '[:upper:]' '[:lower:]' |sed 's/\([a-z]\)\([a-zA-Z0-9]*\)/\u\1\2/g;s/Mp3/mp3/g'| sed 's/mp3//g;s/U0026quot//g;s/U0026amp//g;s/U0026amp//g;s/_amp_//g'| sed 's/\\\//g'`
                A=`echo $t | egrep -i 'jpg|jpeg' | wc -l`
                B=`echo $t | grep -i "png" | wc -l`
                C=`echo $t | grep -i "gif" | wc -l`
                D=`echo $t | grep -i "svg" | wc -l`
                if [ $A -gt 0 ];then
                        t=`echo $t | sed 's/jpg//g'`
                        t="${t}.jpg"
                fi
                if [ $B -gt 0 ];then
                                t=`echo $t | sed 's/png//g'`
                                t="${t}.png"
                fi
                if [ $C -gt 0 ];then
                                t=`echo $t | sed 's/${ext}//g'`
                                t="${t}.${ext}"
                fi
                if [ $D -gt 0 ];then
                                t=`echo $t | sed 's/svg//g'`
                                t="${t}.svg"
                fi
                if [ ! -f $t ];then
                        wget -O $t --timeout=10 $url
                        ES="$?"
                        if [ $ES -lt 1 ];then
                                transform "$t"
                        else
                                rm $t
                        fi
                else
                        echo "[!] ---------------------- file exists , not re-processing : $t"
                fi
) &
        done
done
}

function transform {
set -x
f="$@"
A=$(($RANDOM%50))
B=$(($RANDOM%50))
C=$(($RANDOM%50))
D=$(($RANDOM%50))

convert -colorspace Gray -resize ${resolution} -page -$A-$B "$f" -background white -flatten -contrast-stretch 40% -fuzz 50% -colorspace RGB -fill "${blue}" -opaque black "${f}_a"
convert -colorspace Gray -resize ${resolution} -page +$C+$D "$f" -background white -flatten -contrast-stretch 40% -fuzz 50% -colorspace RGB -fill "${red}" -opaque black "${f}_b"
convert -colorspace Gray -resize ${resolution} -page -$D-$B "$f" -background white -flatten -contrast-stretch 40% -fuzz 50% -colorspace RGB -fill "${green}" -opaque black "${f}_c"
convert -colorspace Gray -resize ${resolution} -page +$A+$C "$f" -background white -flatten -contrast-stretch 40% -fuzz 50% -colorspace RGB -fill "${yellow}" -opaque black "${f}_d"

convert "$f" -colorspace Gray -resize ${resolution} -contrast-stretch 10% \( "${f}_a" -alpha set -channel A -fx '0.8' \) -compose Overlay -composite ${f}_e
convert "$f" -colorspace Gray -resize ${resolution} -contrast-stretch 10% \( "${f}_b" -alpha set -channel A -fx '0.8' \) -compose Overlay -composite ${f}_f
convert "$f" -colorspace Gray -resize ${resolution} -contrast-stretch 10% \( "${f}_c" -alpha set -channel A -fx '0.8' \) -compose Overlay -composite ${f}_g
convert "$f" -colorspace Gray -resize ${resolution} -contrast-stretch 10% \( "${f}_d" -alpha set -channel A -fx '0.8' \) -compose Overlay -composite ${f}_h

convert "${f}" -colorspace Gray -resize ${resolution} -negate -fuzz 10% -colorspace RGB -fill "${blue}" -opaque black \( "${f}_d" -alpha set -channel A -fx '0.8' \) -compose Overlay -composite "${f}_i"
convert "${f}" -colorspace Gray -resize ${resolution} -negate -fuzz 10% -colorspace RGB -fill "${red}" -opaque black \( "${f}_c" -alpha set -channel A -fx '0.8' \) -compose Overlay -composite "${f}_j"
convert "${f}" -colorspace Gray -resize ${resolution} -negate -fuzz 10% -colorspace RGB -fill "${green}" -opaque black \( "${f}_b" -alpha set -channel A -fx '0.8' \) -compose Overlay -composite "${f}_k"
convert "${f}" -colorspace Gray -resize ${resolution} -negate -fuzz 10% -colorspace RGB -fill "${yellow}" -opaque black \( "${f}_a" -alpha set -channel A -fx '0.8' \) -compose Overlay -composite "${f}_l"

convert \( "${f}" -resize ${resolution} -page -$A-$B -flatten -contrast-stretch 20% -alpha set -channel A -fx '0.8' \) "${f}_i" -compose Linear_Light -composite ${f}_m
convert \( "${f}" -resize ${resolution} -page +$A+$C -flatten -contrast-stretch 20% -alpha set -channel A -fx '0.8' \) "${f}_j" -compose Linear_Light -composite ${f}_n
convert \( "${f}" -resize ${resolution} -page +$C+$D -flatten -contrast-stretch 20% -alpha set -channel A -fx '0.8' \) "${f}_k" -compose Linear_Light -composite ${f}_o
convert \( "${f}" -resize ${resolution} -page -$D-$B -flatten -contrast-stretch 20% -alpha set -channel A -fx '0.8' \) "${f}_l" -compose Linear_Light -composite ${f}_p

convert "${f}_l" -negate  \( "${f}" -resize ${resolution} -page +$A+$C  -flatten -contrast-stretch 20% -alpha set -channel A -fx '0.8' \) -compose Linear_Light -composite ${f}_q

convert "${f}_j" -negate  \( "${f}" -resize ${resolution} -page +$A+$C  -flatten -contrast-stretch 20% -alpha set -channel A -fx '0.8' \) -compose Linear_Light -composite ${f}_r
convert "${f}_k" -negate  \( "${f}" -resize ${resolution} -page +$A+$C  -flatten -contrast-stretch 20% -alpha set -channel A -fx '0.8' \) -compose Linear_Light -composite ${f}_s

ext=`echo ${f} | awk -F. '{ print $NF }'`
N=`echo $t | sed 's/svg//g;s/png//g;s/${ext}//g;s/jpg//g;s/\.//g'`
for letter in a b c d e f g h i j k l m n o p q r s;do
        mv "${f}_${letter}" "${N}_${letter}.${ext}"
        convert "${N}_${letter}.${ext}" -ordered-dither h6x6o -channel RGBA -blur 0x1 "${N}_${letter}.${ext}"
done

convert "${f}" -resize ${resolution} "${f}"

O=`echo "a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;" | sed -r 's/(.[^;]*;)/ \1 /g' | tr " " "\n" | shuf | tr -d "\n"|sed 's/;/ /g'`

b="-bordercolor white -border 50x50"

x=1
s="convert ( ${f} "
for l in $O;do
        x=$(($x + 1))
        m=$(($x%4))
        if [ $m -eq 1 ];then
                s=$s" ( ${N}_${l}.${ext} "
        fi
        if [ $m -eq 0 ];then
                s=$s" ${N}_${l}.${ext} $b +append ) "
        fi
        if [ $m -gt 1 ];then
                s=$s" ${N}_${l}.${ext} "
        fi
done
s=$s" -background white -append Z_results/appended_${N}.${ext}"
$s

}

getimages

Leave a Reply

Your email address will not be published. Required fields are marked *