lainchan / vis

(untitled)

Void · 2017-09-25 05:57
A friend of mine whrote a bash script to randomly generate images by merging two separate images, I asked him to make some lain pics and we did. Enjoy
Hououin Kyouma · 2017-09-25 05:58
Anamika · 2017-09-25 06:02
Linda Lee · 2017-09-25 06:10
Otto Normalverbraucher · 2017-09-27 16:46
these are neat. can you post the script?
notneo · 2017-09-27 17:10
>>1081 Here you go. The following would create 10 new images from seed numbers 0 to 10 from image1 and image2: $ for i in {0..10}; do ./vulcan.sh image1.png image2.png $i; done It depends on Imagemagick. The main sh file below and a data file, vulcan.sh and patterns.txt. $ cat vulcan.sh #!/bin/bash ARG1=$1 ARG2=$2 ARG3=$3 gen_clone=1 declare -a patterns patterns=(`cat patterns.txt`) get_random_value_for() { local __result=$1; local lc=`convert -list $2 | wc -l` # lc=`expr $r % $lc + 1` let lc=$RANDOM%$lc+1 local value=$(convert -list $2 | sed -n "${lc}p") eval $__result="'$value'" } gen_rotate() { local __result=$1; local instr let n=$RANDOM%2 case "$n" in 0)instr="-rotate 90 " ;; 1)instr="-blur 0x5 " esac eval $__result="'$instr'" } gen_transform() { local __result=$1; local transform="" let n=$RANDOM%4; case "$n" in 0) ;; 1)gen_rotate result transform+=$result ;; 2) transform+="-flip " ;; 3) transform+="-flop " ;; *) echo "unexpected case" ;; esac eval $__result="'$transform'" } gen_generator() { local __result=$1; local gen="" let n=$RANDOM%4 if [ $n -eq 0 ] && [ $gen_clone -eq 0 ] then let n=1; fi local i case "$n" in 0)gen="+clone " ;; 1)gen="gradient: " ;; 2)gen="xc: +noise Random " ;; 3) let i=$RANDOM%${#patterns[*]} gen="pattern:"${patterns[$i]}" " ;; esac eval $__result="'$gen'" } gen_layer() { local __result=$1; local instr=" ( " gen_generator result instr+=$result gen_transform result; instr+=$result instr+=" ) " eval $__result="'$instr'" } gen_compose() { local __result=$1; get_random_value_for result compose local instr="-compose "$result" " instr+="-composite " eval $__result="'$instr'" } gen_image_cmd() { local __result=$1; local cmd gen_clone=0 gen_layer result cmd+=" "$result gen_clone=1 local n let n=$RANDOM%5; for i in `seq ${n}` do gen_layer result cmd+=" "$result gen_compose result cmd+=$result done eval $__result="'$cmd'" } gen_image_mate_cmd() { local __result=$1; local cmd eval $__result="'$cmd'" } new_seed_from() { local __result=0 local a="${1%.*}" local b="${2%.*}" let "RANDOM=$a + $b + $3" } if [ -z $ARG3 ] then new_seed_from $ARG1 $ARG2 0 gen_image_cmd result let newseed=$RANDOM cmd="convert -seed "$newseed" -size 256x256 "$result" "$newseed.png else VFILENAMEA=$ARG1 VFILENAMEB=$ARG2 new_seed_from $ARG1 $ARG2 $ARG3 gen_transform result XFORM=$result gen_compose result COMP=$result let newseed=$RANDOM cmd="convert -seed "$newseed" -size 256x256 "$VFILENAMEA" "$VFILENAMEB" "$XFORM" "$COMP" "$newseed.png fi echo $cmd $cmd $ cat patterns.txt BRICKS CHECKERBOARD CIRCLES CROSSHATCH CROSSHATCH30 CROSSHATCH45 FISHSCALES GRAY0 GRAY5 GRAY10 GRAY15 GRAY20 GRAY25 GRAY30 GRAY35 GRAY40 GRAY45 GRAY50 GRAY55 GRAY60 GRAY65 GRAY70 GRAY75 GRAY80 GRAY85 GRAY90 GRAY95 GRAY100 HEXAGONS HORIZONTAL HORIZONTAL2 HORIZONTAL3 HORIZONTALSAW HS_BDIAGONAL HS_CROSS HS_DIAGCROSS HS_FDIAGONAL HS_HORIZONTAL HS_VERTICAL LEFT30 LEFT45 LEFTSHINGLE OCTAGONS RIGHT30 RIGHT45 RIGHTSHINGLE SMALLFISHSCALES VERTICAL VERTICAL2 VERTICAL3 VERTICALBRICKS VERTICALLEFTSHINGLE VERTICALRIGHTSHINGLE VERTICALSAW