Skip to content
Snippets Groups Projects
Commit e38a2484 authored by Rolf Niepraschk's avatar Rolf Niepraschk
Browse files

umgeschrieben, vereinfacht, 2 Parameter

parent 017b9611
No related branches found
No related tags found
No related merge requests found
#!/bin/bash #!/bin/bash
# #
# Rolf Niepraschk <Rolf.Niepraschk@ptb.de>, 2016-12-14 # Rolf Niepraschk <Rolf.Niepraschk@ptb.de>, 2017-04-03
# #
# Erzeugt aus einem leeren Messgeräte-Bild und neun 7-Segment-Bildern # Erzeugt aus einem leeren Messgeräte-Bild und neun 7-Segment-Bildern
# neue Messgeräte-Bilder mit zufälliger 6-stelliger Anzeige # neue Messgeräte-Bilder
# #
# Parameter1 = Anzahl der erzeugten Bilddateien
#
# Parameter2 = Anzahl der Einzelziffern
MAIN="MKS-270" # device name MAIN="SRG-2" # device name
IMAGE_DIR=./images IMAGE_DIR=./images
MAX_FILES=10 MAX_DIGITS=6 # do not edit!
MAX_FILES=10 # do not edit!
NUMBER_OF_DIGITS=$MAX_DIGITS
SHOW_EXP=1
if [ -n "$1" ]; then
MAX_FILES=$1
if [ -n "$2" ]; then
SHOW_EXP=0
NUMBER_OF_DIGITS=$2
fi
fi
if (( $NUMBER_OF_DIGITS > $MAX_DIGITS )); then
NUMBER_OF_DIGITS=$MAX_DIGITS
else
if (( $NUMBER_OF_DIGITS < 1 )); then
NUMBER_OF_DIGITS=1
fi
fi
rm -rf "$IMAGE_DIR" rm -rf "$IMAGE_DIR"
mkdir -p "$IMAGE_DIR" mkdir -p "$IMAGE_DIR"
dotFile='dot.png' _dotFile='dot.png'
plusFile='plus.png' _plusFile='plus.png'
minusFile='minus.png' _minusFile='minus.png'
emptyCanvas='xc:transparent' emptyCanvas='xc:transparent'
digitFile[0]='digit-0.png' digitFile[0]='digit-0.png'
...@@ -28,78 +51,104 @@ digitFile[6]='digit-6.png' ...@@ -28,78 +51,104 @@ digitFile[6]='digit-6.png'
digitFile[7]='digit-7.png' digitFile[7]='digit-7.png'
digitFile[8]='digit-8.png' digitFile[8]='digit-8.png'
digitFile[9]='digit-9.png' digitFile[9]='digit-9.png'
digitFile[98]=$emptyCanvas
digitFile[99]=$emptyCanvas digitFile[99]=$emptyCanvas
digitPos[7]='+133+151' digitPos[1]='+133+151'
digitPos[6]='+133+151' digitPos[2]='+193+151'
digitPos[5]='+193+151' digitPos[3]='+253+151'
digitPos[4]='+253+151' digitPos[4]='+313+151'
digitPos[3]='+313+151' digitPos[5]='+373+151'
digitPos[2]='+373+151' digitPos[6]='+433+151'
digitPos[1]='+433+151'
dotPos[1]=${digitPos[1]}
dotPos[6]='+133+151' dotPos[2]=${digitPos[2]}
dotPos[5]='+193+151' dotPos[3]=${digitPos[3]}
dotPos[4]='+253+151' dotPos[4]=${digitPos[4]}
dotPos[3]='+313+151' dotPos[5]=${digitPos[5]}
dotPos[2]='+373+151' dotPos[6]=${digitPos[6]}
dotPos[1]='+433+151'
NUM2CHAR[0]='0'
signPos=${digitPos[7]} NUM2CHAR[1]='1'
NUM2CHAR[2]='2'
NUM2CHAR[3]='3'
NUM2CHAR[4]='4'
NUM2CHAR[5]='5'
NUM2CHAR[6]='6'
NUM2CHAR[7]='7'
NUM2CHAR[8]='8'
NUM2CHAR[9]='9'
NUM2CHAR[98]=''
NUM2CHAR[99]='_'
for ((FNb=1; FNb<=MAX_FILES; FNb++)); do for ((FNb=1; FNb<=MAX_FILES; FNb++)); do
DPR=$((RANDOM % 6 + 1)) # random dot position (1..6)
SIGN=$((RANDOM % 2)) # random (0|1=+|-) SIGN=$((RANDOM % 2)) # random (0|1=+|-)
if [ $SIGN == 0 ]; then if [ $SIGN == 0 ]; then
SF=$plusFile # sign file signFile=$_plusFile # sign file
SCH='+' # sign character signChar='+' # sign character
else else
SF=$minusFile signFile=$_minusFile
SCH='-' signChar='-'
fi fi
for i in {1..6}; do DPR=$((RANDOM % 6 + 1)) # random dot position (1..6)
if [ $i == 6 ]; then # position 6: "1" or nothing
DNR[6]=$((RANDOM % 2)) for (( i=1; i<=$MAX_DIGITS; i++ )); do
if [ ${DNR[6]} == 0 ]; then if [ $i == 1 ]; then # position 1: "1" or nothing
DNR[6]=99 if [ $((RANDOM % 2)) == 0 ]; then
DNR6="_" if [ $DPR == 1 ]; then
DNR[1]=98 # no space
else
DNR[1]=99 # space
fi
else else
DNR6="1" DNR[1]=1
fi fi
# random digit number (99|1) # random digit number (99|1)
else else
DNR[$i]=$((RANDOM % 10)) # random digit number (0..9) DNR[$i]=$((RANDOM % 10)) # random digit number (0..9)
fi fi
if [ $DPR == $i ]; then if [ $DPR == $i ]; then
DF[$i]="$dotFile" dotFile[$i]="$_dotFile"
DP[$i]="." # dot character dotChar[$i]="." # dot character
else else
DF[$i]=$emptyCanvas dotFile[$i]=$emptyCanvas
DP[$i]="" dotChar[$i]=""
fi fi
done done
value="${SCH}${DNR6}${DP[6]}${DNR[5]}${DP[5]}${DNR[4]}${DP[4]}" value="${signChar}${DNR6}${dotChar[6]}${DNR[5]}${dotChar[5]}${DNR[4]}${dotChar[4]}"
value+="${DNR[3]}${DP[3]}${DNR[2]}${DP[2]}${DNR[1]}${DP[1]}" value+="${DNR[3]}${dotChar[3]}${DNR[2]}${dotChar[2]}${DNR[1]}${dotChar[1]}"
value="${signChar}"
for (( i=1; i<=$MAX_DIGITS; i++ )); do
if (( $i <= $NUMBER_OF_DIGITS )); then
eval DIGIT$i=${digitFile[ ${DNR[i]} ]}
eval DF$i=${dotFile[i]}
value+="${NUM2CHAR[${DNR[i]}]}${dotChar[i]}"
else
eval DIGIT$i=$emptyCanvas;
eval DF$i=$emptyCanvas;
fi
done
fname="$IMAGE_DIR/$MAIN@$value@.png" fname="$IMAGE_DIR/$MAIN@$value@.png"
convert body.png \ convert body.png \
$SF -geometry $signPos -composite \ $signFile -geometry ${digitPos[1]} -composite \
${digitFile[ ${DNR[6]} ]} -geometry ${digitPos[6]} -composite \ $DIGIT1 -geometry ${digitPos[1]} -composite \
${DF[6]} -geometry ${dotPos[6]} -composite \ $DF1 -geometry ${dotPos[1]} -composite \
${digitFile[ ${DNR[5]} ]} -geometry ${digitPos[5]} -composite \ $DIGIT2 -geometry ${digitPos[2]} -composite \
${DF[5]} -geometry ${dotPos[5]} -composite \ $DF2 -geometry ${dotPos[2]} -composite \
${digitFile[ ${DNR[4]} ]} -geometry ${digitPos[4]} -composite \ $DIGIT3 -geometry ${digitPos[3]} -composite \
${DF[4]} -geometry ${dotPos[4]} -composite \ $DF3 -geometry ${dotPos[3]} -composite \
${digitFile[ ${DNR[3]} ]} -geometry ${digitPos[3]} -composite \ $DIGIT4 -geometry ${digitPos[4]} -composite \
${DF[3]} -geometry ${dotPos[3]} -composite \ $DF4 -geometry ${dotPos[4]} -composite \
${digitFile[ ${DNR[2]} ]} -geometry ${digitPos[2]} -composite \ $DIGIT5 -geometry ${digitPos[5]} -composite \
${DF[2]} -geometry ${dotPos[2]} -composite \ $DF5 -geometry ${dotPos[5]} -composite \
${digitFile[ ${DNR[1]} ]} -geometry ${digitPos[1]} -composite \ $DIGIT6 -geometry ${digitPos[6]} -composite \
${DF[1]} -geometry ${dotPos[1]} -composite \ $DF6 -geometry ${dotPos[6]} -composite \
$fname $fname
exiv2 -M"set Exif.Image.ImageDescription value=$value" $fname exiv2 -M"set Exif.Image.ImageDescription value=$value" $fname
...@@ -109,40 +158,6 @@ echo -e "$FNb:\t$fname" ...@@ -109,40 +158,6 @@ echo -e "$FNb:\t$fname"
done # MAX_FILES done # MAX_FILES
exit 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
----------------------------------------------------------------------- -----------------------------------------------------------------------
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment