#!/bin/bash # # Rolf Niepraschk <Rolf.Niepraschk@ptb.de>, 2017-03-27 # # Erzeugt aus einem leeren Messgeräte-Bild und neun 7-Segment-Bildern # neue Messgeräte-Bilder mit zufälliger 6-stelliger Anzeige # # Parameter=Anzahl der Mantissenziffern # (wenn angegeben, dann kein Exponenent) MAIN="SRG-2" # device name IMAGE_DIR=./images MAX_FILES=10 MAX_DIGITS=6 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 digitPos[10]='+119+177' digitPos[9]='+161.4+177' digitPos[8]='+203.8+177' digitPos[7]='+246.2+177' digitPos[6]='+288.6+177' digitPos[5]='+331+177' digitPos[4]='+373.4+177' digitPos[3]='+415.8+177' digitPos[2]='+458.2+177' digitPos[1]='+500.6+177' esignPos=${digitPos[3]} dotPos[10]='+119+177' dotPos[9]='+161.4+177' dotPos[8]='+203.8+177' dotPos[7]='+246.2+177' dotPos[6]='+288.6+177' dotPos[5]='+331+177' dotPos[4]='+373.4+177' dotPos[3]='+415.8+177' dotPos[2]='+458.2+177' dotPos[1]='+500.6+177' for ((FNb=1; FNb<=MAX_FILES; FNb++)); do DPR=$((RANDOM % 6 + 5)) # random dot position (5..10) ESIGN=$((RANDOM % 2)) # random (0|1=' '|-) if [ $ESIGN == 1 ]; then ESF=$minusFile # sign file ESCH='-' # sign character else ESF=$emptyCanvas ESCH='_' fi for i in {1..10}; 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 value="${DNR[10]}${DP[10]}${DNR[9]}${DP[9]}${DNR[8]}${DP[8]}" value+="${DNR[7]}${DP[7]}${DNR[6]}${DP[6]}${DNR[5]}${DP[5]}" value+="_$ESCH" value+="${DNR[2]}${DP[2]}${DNR[1]}${DP[1]}" 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+4]} ]} eval DF$i=${DF[i+4]} value+="${DNR[i+4]}${DP[i+4]}" else eval DIGIT$i=$emptyCanvas; eval DF$i=$emptyCanvas; fi done if (( $SHOW_EXP > 0 )); then value+="E${DNR[2]}${DNR[1]}" fi fname="$IMAGE_DIR/$MAIN@$value@.png" convert body.png \ $DIGIT1 -geometry ${digitPos[10]} -composite \ $DF1 -geometry ${dotPos[10]} -composite \ $DIGIT2 -geometry ${digitPos[9]} -composite \ $DF2 -geometry ${dotPos[9]} -composite \ $DIGIT3 -geometry ${digitPos[8]} -composite \ $DF3 -geometry ${dotPos[8]} -composite \ $DIGIT4 -geometry ${digitPos[7]} -composite \ $DF4 -geometry ${dotPos[7]} -composite \ $DIGIT5 -geometry ${digitPos[6]} -composite \ $DF5 -geometry ${dotPos[6]} -composite \ $DIGIT6 -geometry ${digitPos[5]} -composite \ $DF6 -geometry ${dotPos[5]} -composite \ $ESF -geometry $esignPos -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 ----------------------------------------------------------------------- Auslesen der Exif-Daten: exiv2 -g Exif.Image.ImageDescription -P v ./images/151.108@GERAET_X.png --> value=151.108