#!/bin/bash # # ||||||||||||||||||||||||||||||||||||||||||||||||||| # ||||||||||||||||||||||||||||||||||||||||||||||||||| # http://www.forkable.eu/generators/wtf/i/xpm_0_07.sh # GENERATES RANDOM OUTPUT # THIS IS A MESS !!! BUT FUN !!! # EXECUTE LIKE THIS: # ./xpm_0_03.sh [FILENAME]... [CYCLES]... # SECTOR:{30}{30}{370}{370} # SECTOR:{30}{30}{370}{370} # SECTOR:{100}{100}{300}{300} # SECTOR:{150}{150}{250}{250} # BORDER:1pt # SUITABLE FOR FOLLOWING GRIDS:,9, TMPDIR=tmp HEADENDSTRING="pixels" BODYENDSTRING="};" BODYTEMP=$TMPDIR/body.tmp LINESTARTSTRING="\"" LINEENDSTRING="\"," ###################################################################### extractBody () { ## EXTRACT XPM BODY TO TEMP ## sed -n "/$HEADENDSTRING/,/$BODYENDSTRING/p" \ $1 |\ head -n -1 | tac | head -n -1 | tac |\ cut -d "\"" -f 2 > $BODYTEMP #replace ' ' 'x' -- $BODYTEMP sed -i 's/ /x/g' $BODYTEMP } reconstructXPM () { ## RECONSTRUCT VALID XPM ## FILENAME=${1%.*} sed -n "/XPM/,/$HEADENDSTRING/p" $FILENAME.xpm > head.tmp cat head.tmp > $FILENAME.xpm rm head.tmp HEIGHT=`wc -l $BODYTEMP | cut -d " " -f 1` COUNT=1 for LINE in `cat $BODYTEMP` do if [ $COUNT -eq `expr $HEIGHT - 1` ]; then LINEENDSTRING="\"" else LINEENDSTRING="\"," fi echo $LINESTARTSTRING$LINE$LINEENDSTRING >> $FILENAME.xpm COUNT=`expr $COUNT + 1` done echo $BODYENDSTRING >> $FILENAME.xpm #replace '" c ' '"x c ' -- $FILENAME.xpm sed -i 's/" c /"x c /g' $FILENAME.xpm } ###################################################################### FILE=$1 DAY=$2 ORIGINAL=${FILE##*/} NAME=${ORIGINAL%.*} TMPDIR=tmp PFADNAME=${FILE%.*} SOURCE=tmp/$NAME.pdf convert -resize 400 $FILE $SOURCE while [ $DAY -gt 0 ] do COUNT=`echo 000$DAY |\ rev |\ cut -c 1-4 |\ rev` RESULT=$TMPDIR/$NAME-$COUNT.pdf SIZE=400 if [ $DAY -eq $2 ]; then convert -monochrome -resize $SIZE $SOURCE $TMPDIR/$NAME.png autotrace -background-color FFFFFF \ -corner-threshold 200 \ -corner-always-threshold 100 \ -error-threshold 50 \ -output-file=$RESULT \ $TMPDIR/$NAME.png else convert $SOURCE -colorspace Gray -negate \ $TMPDIR/$NAME.tmp.png composite -compose CopyOpacity \ $TMPDIR/$NAME.tmp.png \ $SOURCE tmp/matte.png convert $TMPDIR/matte.png -ordered-dither 4x4 \ -resize $SIZE +antialias \ $TMPDIR/$NAME.gif convert $TMPDIR/$NAME.gif -background white \ -resize $SIZE +antialias \ -flatten +matte $TMPDIR/dither.gif FILE=$TMPDIR/dither.gif convert -monochrome $FILE $TMPDIR/$NAME.xpm extractBody $TMPDIR/$NAME.xpm echo "" > $BODYTEMP.2 COUNT=0 for LINE in `cat $BODYTEMP` do BLACKS=`echo $LINE | tr -d . | wc -c` RND=`echo $RANDOM$RANDOM$RANDOM | cut -c 3` RNDEINS=`echo $RANDOM$RANDOM$RANDOM | cut -c 1` RNDZWEI=`echo $RANDOM$RANDOM$RANDOM | cut -c 2` SELECTLINE=`expr $COUNT + $RNDZWEI - $RNDEINS` if [ $BLACKS -gt $DAY ]; then awk "NR==$SELECTLINE" $BODYTEMP >> $BODYTEMP.2 else echo $LINE >> $BODYTEMP.2 fi COUNT=`expr $COUNT + 1` done mv $BODYTEMP.2 $BODYTEMP reconstructXPM $TMPDIR/$NAME.xpm rm $BODYTEMP convert $TMPDIR/$NAME.xpm $TMPDIR/$NAME.png autotrace -background-color FFFFFF \ -corner-threshold 300 \ -corner-always-threshold 300 \ -error-threshold 100 \ -output-file=$RESULT \ $TMPDIR/$NAME.png fi convert -resize $SIZE \ $RESULT \ $TMPDIR/$NAME.tmp.png convert -resize $SIZE \ $TMPDIR/$NAME.tmp.png \ $SOURCE DAY=`expr $DAY - 1` done rm $TMPDIR/*.gif $TMPDIR/*.png $SOURCE exit 0;