#!/bin/bash # # Rolf Niepraschk <Rolf.Niepraschk@ptb.de>, 2017-04-03 # # Erzeugt aus einem leeren Messgeräte-Bild und neun 7-Segment-Bildern # neue Messgeräte-Bilder # # Parameter1 = Anzahl der erzeugten Bilddateien # MAIN="ADIXEN" # device name IMAGE_DIR=./images 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 emptyCanvas='xc:transparent' dotFile[0]=$emptyCanvas dotFile[1]='char-dot.png' charFile[0]='char-0.png' charFile[1]='char-1.png' charFile[2]='char-2.png' charFile[3]='char-3.png' charFile[4]='char-4.png' charFile[5]='char-5.png' charFile[6]='char-6.png' charFile[7]='char-7.png' charFile[8]='char-8.png' charFile[9]='char-9.png' charFile[10]='char-A.png' charFile[11]='char-C.png' charFile[12]='char-E.png' charFile[13]='char-F.png' charFile[14]='char-H.png' charFile[15]='char-r.png' charFile[16]='char-minus.png' charFile[99]=$emptyCanvas eCharFile[0]='char-e0.png' eCharFile[1]='char-e1.png' eCharFile[2]='char-e2.png' eCharFile[3]='char-e3.png' eCharFile[4]='char-e4.png' eCharFile[5]='char-e5.png' eCharFile[6]='char-e6.png' eCharFile[7]='char-e7.png' eCharFile[8]='char-e8.png' eCharFile[9]='char-e9.png' eCharFile[99]=$emptyCanvas ePrefixFile[0]='char-eMinus.png' ePrefixFile[1]='char-ePlus.png' NUM2PREFIXCHAR[0]='-' NUM2PREFIXCHAR[1]='+' NUM2CHAR[0]='0' 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[10]='A' NUM2CHAR[11]='C' NUM2CHAR[12]='E' NUM2CHAR[13]='F' NUM2CHAR[14]='H' NUM2CHAR[15]='r' NUM2CHAR[16]='-' NUM2CHAR[99]='_' NUM2DOTCHAR[0]='' NUM2DOTCHAR[1]='.' charPos[6]='+80+192' charPos[5]='+148+192' charPos[4]='+215+192' charPos[3]='+282+192' charPos[2]='+348+192' charPos[1]='+417+192' dotPos[6]='+133+191' dotPos[5]='+199+191' dotPos[4]='+265+191' dotPos[3]='+331+191' dotPos[2]='+398+191' dotPos[1]='+465+191' eCharPos[3]='+483+191' eCharPos[2]='+512+191' eCharPos[1]='+532+191' for ((FNb=1; FNb<=MAX_FILES; FNb++)); do dp=$((RANDOM % $MAX_DIGITS + 1)) # the place of the dot (1..6) for (( i=1; i<=$MAX_DIGITS; i++ )); do if [ $i == 6 ]; then CHAR[$i]=$((RANDOM % 17)) # random char number (0..16, 16=minus) else CHAR[$i]=$((RANDOM % 16)) # random char number (0..15) fi if [ $i == $dp ]; then DOTCHAR[$i]=1 # dot else DOTCHAR[$i]=0 # empty fi EPREFIX=$((RANDOM % 2)) # 0..1 (0=minus, 1=plus) ECHAR[2]=$((RANDOM % 2)) # random char number (1 or 99, 99="_") if [ ${ECHAR[2]} == 0 ]; then ECHAR[2]=99; fi ECHAR[1]=$((RANDOM % 10)) # random char number (0..9) done value="" value+="${NUM2CHAR[${CHAR[6]} ]}${NUM2DOTCHAR[ ${DOTCHAR[6]}]}" value+="${NUM2CHAR[${CHAR[5]}]}${NUM2DOTCHAR[${DOTCHAR[5]}]}" value+="${NUM2CHAR[${CHAR[4]}]}${NUM2DOTCHAR[${DOTCHAR[4]}]}" value+="${NUM2CHAR[${CHAR[3]}]}${NUM2DOTCHAR[${DOTCHAR[3]}]}" value+="${NUM2CHAR[${CHAR[2]}]}${NUM2DOTCHAR[${DOTCHAR[2]}]}" value+="${NUM2CHAR[${CHAR[1]}]}${NUM2DOTCHAR[${DOTCHAR[1]}]}" value+="${NUM2PREFIXCHAR[${EPREFIX}]}" value+="${NUM2CHAR[${ECHAR[2]}]}" value+="${NUM2CHAR[${ECHAR[1]}]}" fname="$IMAGE_DIR/$MAIN@$value@.png" echo -e "$FNb:\t$fname" convert body.png \ ${charFile[ ${CHAR[6]} ]} -geometry ${charPos[6]} -composite \ ${dotFile[ ${DOTCHAR[6]} ]} -geometry ${dotPos[6]} -composite \ ${charFile[ ${CHAR[5]} ]} -geometry ${charPos[5]} -composite \ ${dotFile[ ${DOTCHAR[5]} ]} -geometry ${dotPos[5]} -composite \ ${charFile[ ${CHAR[4]} ]} -geometry ${charPos[4]} -composite \ ${dotFile[ ${DOTCHAR[4]} ]} -geometry ${dotPos[4]} -composite \ ${charFile[ ${CHAR[3]} ]} -geometry ${charPos[3]} -composite \ ${dotFile[ ${DOTCHAR[3]} ]} -geometry ${dotPos[3]} -composite \ ${charFile[ ${CHAR[2]} ]} -geometry ${charPos[2]} -composite \ ${dotFile[ ${DOTCHAR[2]} ]} -geometry ${dotPos[2]} -composite \ ${charFile[ ${CHAR[1]} ]} -geometry ${charPos[1]} -composite \ ${dotFile[ ${DOTCHAR[1]} ]} -geometry ${dotPos[1]} -composite \ ${ePrefixFile[ ${EPREFIX} ]} -geometry ${eCharPos[3]} -composite \ ${eCharFile[ ${ECHAR[2]} ]} -geometry ${eCharPos[2]} -composite \ ${eCharFile[ ${ECHAR[1]} ]} -geometry ${eCharPos[1]} -composite \ $fname exiv2 -M"set Exif.Image.ImageDescription value=$value" $fname done # MAX_FILES exit ----------------------------------------------------------------------- Auslesen der Exif-Daten: exiv2 -g exiv2 -g Exif.Image.ImageDescription -P v \ ./images/adixen@2.C1F20-_8@.png --> value=2.C1F20-_8