#!/bin/bash # # Rolf Niepraschk <Rolf.Niepraschk@ptb.de>, 2017-03-29 # # Erzeugt aus einem leeren Messgeräte-Bild und neun 7-Segment-Bildern # neue Messgeräte-Bilder mit zufälliger Anzeige # # Parameter=Anzahl der Mantissenziffern # (wenn angegeben, dann kein Exponenent) MAIN="KEITHLEY-2701" # device name IMAGE_DIR=./images MAX_FILES=10 MAX_DIGITS=7 if [ -n "$1" ]; then NUMBER_OF_DIGITS=$1 SHOW_EXP=0 else NUMBER_OF_DIGITS=$MAX_DIGITS SHOW_EXP=1 fi if (( $NUMBER_OF_DIGITS > $MAX_DIGITS )); then NUMBER_OF_DIGITS=$MAX_DIGITS fi if (( $NUMBER_OF_DIGITS < 1 )); then NUMBER_OF_DIGITS=1 fi rm -rf "$IMAGE_DIR" mkdir -p "$IMAGE_DIR" dotFile='dot.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 # empty canvas digitPos[7]='+185+220' digitPos[6]='+207+220' digitPos[5]='+229+220' digitPos[4]='+251+220' digitPos[3]='+273+220' digitPos[2]='+295+220' digitPos[1]='+317+220' dotPos[7]=${digitPos[7]} dotPos[6]=${digitPos[6]} dotPos[5]=${digitPos[5]} dotPos[4]=${digitPos[4]} dotPos[3]=${digitPos[3]} dotPos[2]=${digitPos[2]} dotPos[1]=${digitPos[1]} for ((FNb=1; FNb<=MAX_FILES; FNb++)); do DPR=$((RANDOM % $NUMBER_OF_DIGITS + 1)) # random dot position (1..$NUMBER_OF_DIGITS) for i in {1..7}; do DNR[$i]=$((RANDOM % 10)) # random digit number (0..9) if [ $DPR == $i ]; then DF[$i]="$dotFile" DP[$i]="." # dot character else DF[$i]=$emptyCanvas DP[$i]="" fi done fname="$IMAGE_DIR/$MAIN@$value@.png" value="" for (( i=1; i<=$MAX_DIGITS; i++ )); do if (( $i <= $NUMBER_OF_DIGITS )); then eval DIGIT$i=${digitFile[ ${DNR[i]} ]} eval DF$i=${DF[i]} value+="${DNR[i]}${DP[i]}" else eval DIGIT$i=$emptyCanvas; eval DF$i=$emptyCanvas; fi done fname="$IMAGE_DIR/$MAIN@$value@.png" convert body.png \ $DIGIT1 -geometry ${digitPos[7]} -composite \ $DF1 -geometry ${dotPos[7]} -composite \ $DIGIT2 -geometry ${digitPos[6]} -composite \ $DF2 -geometry ${dotPos[6]} -composite \ $DIGIT3 -geometry ${digitPos[5]} -composite \ $DF3 -geometry ${dotPos[5]} -composite \ $DIGIT4 -geometry ${digitPos[4]} -composite \ $DF4 -geometry ${dotPos[4]} -composite \ $DIGIT5 -geometry ${digitPos[3]} -composite \ $DF5 -geometry ${dotPos[3]} -composite \ $DIGIT6 -geometry ${digitPos[2]} -composite \ $DF6 -geometry ${dotPos[2]} -composite \ $DIGIT7 -geometry ${digitPos[1]} -composite \ $DF7 -geometry ${dotPos[1]} -composite \ $fname exiv2 -M"set Exif.Image.ImageDescription value=$value" $fname echo -e "$FNb:\t$fname" done # MAX_FILES exit ----------------------------------------------------------------------- Auslesen der Exif-Daten: exiv2 -g Exif.Image.ImageDescription -P v ./images/151.108@GERAET_X.png --> value=151.108 echo 1: $DIGIT1 -geometry ${digitPos[7]} -composite echo 2: $DF1 -geometry ${dotPos[7]} -composite echo 3: $DIGIT2 -geometry ${digitPos[6]} -composite echo 4: $DF2 -geometry ${dotPos[6]} -composite echo 5: $DIGIT3 -geometry ${digitPos[5]} -composite echo 6: $DF3 -geometry ${dotPos[5]} -composite echo 7: $DIGIT4 -geometry ${digitPos[4]} -composite echo 8: $DF4 -geometry ${dotPos[4]} -composite echo 9: $DIGIT5 -geometry ${digitPos[3]} -composite echo 10: $DF5 -geometry ${dotPos[3]} -composite echo 11: $DIGIT6 -geometry ${digitPos[2]} -composite echo 12: $DF6 -geometry ${dotPos[2]} -composite echo 13: $DIGIT7 -geometry ${digitPos[1]} -composite echo 14: $DF7 -geometry ${dotPos[1]} -composite echo 15: $fname exit