#!/bin/bash # # Rolf Niepraschk <Rolf.Niepraschk@ptb.de>, 2016-12-12 # # Erzeugt aus einem leeren Messgeräte-Bild und neun 7-Segment-Bildern # neue Messgeräte-Bilder mit zufälliger 6-stelliger Anzeige # MAIN="FLUKE-8840A" # device name IMAGE_DIR=./images MAX_FILES=10 rm -rf "$IMAGE_DIR" mkdir -p "$IMAGE_DIR" dotFile='dot.png' plusFile='plus.png' minusFile='minus.png' emptyCanvas='xc:transparent' digitFile[0]='digit-0.png' digitFile[1]='digit-1.png' digitFile[2]='digit-2.png' digitFile[3]='digit-3.png' digitFile[4]='digit-4.png' digitFile[5]='digit-5.png' digitFile[6]='digit-6.png' digitFile[7]='digit-7.png' digitFile[8]='digit-8.png' digitFile[9]='digit-9.png' digitFile[99]=$emptyCanvas digitPos[6]='+192+173.65' digitPos[5]='+226+173.65' digitPos[4]='+260+173.65' digitPos[3]='+294+173.65' digitPos[2]='+328+173.65' digitPos[1]='+362+173.65' dotPos[6]='+192+173.65' dotPos[5]='+226+173.65' dotPos[4]='+260+173.65' dotPos[3]='+294+173.65' dotPos[2]='+328+173.65' dotPos[1]='+362+173.65' signPos='+187+173' for ((FNb=1; FNb<=MAX_FILES; FNb++)); do DPR=$((RANDOM % 6 + 1)) # random dot position (1..6) SIGN=$((RANDOM % 2)) # random (0|1=+|-) if [ $SIGN == 0 ]; then SF=$plusFile # sign file SCH='+' # sign character else SF=$minusFile SCH='-' fi for i in {1..6}; do if [ $i == 6 ]; then # position 6: "1" or nothing DNR[6]=$((RANDOM % 2)) if [ ${DNR[6]} == 0 ]; then DNR[6]=99; fi # random digit number (99|1) else DNR[$i]=$((RANDOM % 10)) # random digit number (0..9) fi if [ $DPR == $i ]; then DF[$i]="$dotFile" DP[$i]="." # dot character else DF[$i]=$emptyCanvas DP[$i]="" fi done value="${SCH}${DNR[6]}${DP[6]}${DNR[5]}${DP[5]}${DNR[4]}${DP[4]}" value+="${DNR[3]}${DP[3]}${DNR[2]}${DP[2]}${DNR[1]}${DP[1]}" fname="$IMAGE_DIR/$MAIN@$value@.png" convert body.png \ $SF -geometry $signPos -composite \ ${digitFile[ ${DNR[6]} ]} -geometry ${digitPos[6]} -composite \ ${DF[6]} -geometry ${dotPos[6]} -composite \ ${digitFile[ ${DNR[5]} ]} -geometry ${digitPos[5]} -composite \ ${DF[5]} -geometry ${dotPos[5]} -composite \ ${digitFile[ ${DNR[4]} ]} -geometry ${digitPos[4]} -composite \ ${DF[4]} -geometry ${dotPos[4]} -composite \ ${digitFile[ ${DNR[3]} ]} -geometry ${digitPos[3]} -composite \ ${DF[3]} -geometry ${dotPos[3]} -composite \ ${digitFile[ ${DNR[2]} ]} -geometry ${digitPos[2]} -composite \ ${DF[2]} -geometry ${dotPos[2]} -composite \ ${digitFile[ ${DNR[1]} ]} -geometry ${digitPos[1]} -composite \ ${DF[1]} -geometry ${dotPos[1]} -composite \ $fname exiv2 -M"set Exif.Image.ImageDescription value=$value" $fname echo -e "$FNb:\t$fname" done # MAX_FILES exit Test: SF=$plusFile fname=yy.png DNR[6]=1 DNR[5]=7 DNR[4]=3 DNR[3]=0 DNR[2]=5 DNR[1]=6 DF[6]=$dotFile DF[5]=$emptyCanvas DF[4]=$emptyCanvas DF[3]=$emptyCanvas DF[2]=$emptyCanvas DF[1]=$emptyCanvas convert body.png \ $SF -geometry $signPos -composite \ ${digitFile[ ${DNR[6]} ]} -geometry ${digitPos[6]} -composite \ ${DF[6]} -geometry ${dotPos[6]} -composite \ ${digitFile[ ${DNR[5]} ]} -geometry ${digitPos[5]} -composite \ ${DF[5]} -geometry ${dotPos[5]} -composite \ ${digitFile[ ${DNR[4]} ]} -geometry ${digitPos[4]} -composite \ ${DF[4]} -geometry ${dotPos[4]} -composite \ ${digitFile[ ${DNR[3]} ]} -geometry ${digitPos[3]} -composite \ ${DF[3]} -geometry ${dotPos[3]} -composite \ ${digitFile[ ${DNR[2]} ]} -geometry ${digitPos[2]} -composite \ ${DF[2]} -geometry ${dotPos[2]} -composite \ ${digitFile[ ${DNR[1]} ]} -geometry ${digitPos[1]} -composite \ ${DF[1]} -geometry ${dotPos[1]} -composite \ yy.png ----------------------------------------------------------------------- Auslesen der Exif-Daten: exiv2 -g Exif.Image.ImageDescription -P v ./images/151.108@GERAET_X.png --> value=151.108