- Skalierung gemacht
This commit is contained in:
+1
-8
@@ -39,7 +39,6 @@ function checkqueue {
|
|||||||
do
|
do
|
||||||
if [ ! -d /proc/$PID ] ; then
|
if [ ! -d /proc/$PID ] ; then
|
||||||
regeneratequeue # at least one PID has finished
|
regeneratequeue # at least one PID has finished
|
||||||
echo $PID
|
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -47,10 +46,7 @@ function checkqueue {
|
|||||||
function cfg_parser {
|
function cfg_parser {
|
||||||
INI_FILE=$1
|
INI_FILE=$1
|
||||||
SECTION=$2
|
SECTION=$2
|
||||||
echo $1
|
|
||||||
echo $2
|
|
||||||
eval `sed -n -e "/^\[$SECTION\]/,/^\s*\[/{/^[^;].*\=.*/p;}" < $INI_FILE`>> trr.txt
|
eval `sed -n -e "/^\[$SECTION\]/,/^\s*\[/{/^[^;].*\=.*/p;}" < $INI_FILE`>> trr.txt
|
||||||
echo 'helololo'
|
|
||||||
}
|
}
|
||||||
function get_filepath {
|
function get_filepath {
|
||||||
# probiere alle möglichen Kombinationen wo das file stehen könnte je
|
# probiere alle möglichen Kombinationen wo das file stehen könnte je
|
||||||
@@ -139,19 +135,16 @@ check_params
|
|||||||
echo $INPUT_FILE
|
echo $INPUT_FILE
|
||||||
for i in `ls $INPUT_FILE| grep .svg `
|
for i in `ls $INPUT_FILE| grep .svg `
|
||||||
do
|
do
|
||||||
echo $i
|
|
||||||
echo $CHECKFILE
|
|
||||||
ID=`echo "$i" | sed -e 's/;.*//g'`
|
ID=`echo "$i" | sed -e 's/;.*//g'`
|
||||||
PIC_NAME=`echo "$i" | sed -e 's/.svg/.jpg/g'`
|
PIC_NAME=`echo "$i" | sed -e 's/.svg/.jpg/g'`
|
||||||
FILE_PATH=$INPUT_FILE/$PIC_NAME
|
FILE_PATH=$INPUT_FILE/$PIC_NAME
|
||||||
if [ -s $FILE_PATH ] && [ $CHECKFILE -eq 1 ]
|
if [ -s $FILE_PATH ] && [ $CHECKFILE -eq 1 ]
|
||||||
then
|
then
|
||||||
echo $PIC_NAME exists!
|
echo $PIC_NAME exists
|
||||||
else
|
else
|
||||||
RESIZE="${width}x${height}"
|
RESIZE="${width}x${height}"
|
||||||
SWITCHES="-density $density $INPUT_FILE/$ID -resize $RESIZE $INPUT_FILE/$PIC_NAME"
|
SWITCHES="-density $density $INPUT_FILE/$ID -resize $RESIZE $INPUT_FILE/$PIC_NAME"
|
||||||
CMDLINE="$CMD $SWITCHES"
|
CMDLINE="$CMD $SWITCHES"
|
||||||
echo $CMDLINE
|
|
||||||
(echo $ID; $CMDLINE) &
|
(echo $ID; $CMDLINE) &
|
||||||
|
|
||||||
PID=$!
|
PID=$!
|
||||||
|
|||||||
@@ -31,16 +31,19 @@ content=${name}
|
|||||||
# Ab dem Punkt wird zu schreiben begonnen
|
# Ab dem Punkt wird zu schreiben begonnen
|
||||||
x=0
|
x=0
|
||||||
y=0
|
y=0
|
||||||
length=200
|
height=850
|
||||||
|
width=2700
|
||||||
# Fontname und Fonttyp
|
# Fontname und Fonttyp
|
||||||
fontname=ausgangsschrift
|
fontname=ausgangsschrift
|
||||||
glyph_space=20
|
glyph_space=20
|
||||||
counter_replace=True
|
counter_replace=True
|
||||||
#align=center,left,right
|
#align=center,left,right
|
||||||
align=left
|
align=center
|
||||||
|
yalign=center
|
||||||
|
autoscale=True
|
||||||
|
|
||||||
[jpgs]
|
[jpgs]
|
||||||
width=1900
|
width=2776
|
||||||
height=700
|
height=898
|
||||||
format=jpg
|
format=jpg
|
||||||
density=300
|
density=300
|
||||||
|
|||||||
+1
-1
@@ -76,7 +76,7 @@ z;z
|
|||||||
Z;Z
|
Z;Z
|
||||||
plus;+
|
plus;+
|
||||||
scharfs;ß
|
scharfs;ß
|
||||||
slash;
|
slash;/
|
||||||
space;
|
space;
|
||||||
minus;-
|
minus;-
|
||||||
komma;,
|
komma;,
|
||||||
|
|||||||
|
+5
-8
@@ -1,9 +1,6 @@
|
|||||||
Kennummer;Name
|
Kennummer;Name
|
||||||
a-z;mnopqrstuvwxyzabcdefghijkl
|
001;Au
|
||||||
A-Z;ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
002;Rau
|
||||||
ü;:.:.:.:...---++!!&&
|
003;Lux
|
||||||
001;Michael
|
004;May
|
||||||
yxelbüxel;Eva
|
005;Johnson-Kronh-Wattenberg
|
||||||
063453;Nicola Jane
|
|
||||||
333;&
|
|
||||||
12;ä Ä é è ëïóöÖß/-,:!'a&b+úüÜ
|
|
||||||
|
|||||||
|
+108
-19
@@ -21,6 +21,7 @@ def create_picture_frame( config ):
|
|||||||
params = dict()
|
params = dict()
|
||||||
params['width'] = config.get('globals', 'width')
|
params['width'] = config.get('globals', 'width')
|
||||||
params['height'] = config.get('globals', 'height')
|
params['height'] = config.get('globals', 'height')
|
||||||
|
params['background'] = config.get('globals', 'background')
|
||||||
|
|
||||||
#echo '<svg xmlns="http://www.w3.org/2000/svg" version="1.1">'
|
#echo '<svg xmlns="http://www.w3.org/2000/svg" version="1.1">'
|
||||||
begintpl = '''<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
begintpl = '''<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
@@ -32,8 +33,22 @@ def create_picture_frame( config ):
|
|||||||
width="${width}"
|
width="${width}"
|
||||||
height="${height}"
|
height="${height}"
|
||||||
>
|
>
|
||||||
|
'''
|
||||||
|
imagetpl = ''' <image width="${width}" height="${height}"
|
||||||
|
xlink:href="file://${background}">
|
||||||
|
</image>
|
||||||
'''
|
'''
|
||||||
svgbegin = Template( begintpl ).substitute(params)
|
svgbegin = Template( begintpl ).substitute(params)
|
||||||
|
# falls ein Hintergrundbild verwendet werden soll, dann das genauso gross
|
||||||
|
# machen...
|
||||||
|
try:
|
||||||
|
background = config.get('globals', 'background')
|
||||||
|
font_path = os.path.expandvars(os.path.join('$PICCREATE_BACKGROUNDS', background ))
|
||||||
|
params['background'] = os.path.normpath(font_path)
|
||||||
|
svgbegin = svgbegin + Template( imagetpl ).substitute(params)
|
||||||
|
except ConfigParser.NoOptionError:
|
||||||
|
# dann eben kein Hintergrundbild
|
||||||
|
pass
|
||||||
svgend = '</svg>'
|
svgend = '</svg>'
|
||||||
return svgbegin, svgend
|
return svgbegin, svgend
|
||||||
|
|
||||||
@@ -41,13 +56,76 @@ def write_font_line( content, font, params ):
|
|||||||
''' erzeugt den SVG Teil des Bildes aus Einzelkomponenten
|
''' erzeugt den SVG Teil des Bildes aus Einzelkomponenten
|
||||||
'''
|
'''
|
||||||
w = Word(content, font, params)
|
w = Word(content, font, params)
|
||||||
return w.GetSVG()
|
wordsvg = w.GetSVG()
|
||||||
|
|
||||||
|
# falls das Wort nun skaliert werden soll
|
||||||
|
if params.has_key('scale'):
|
||||||
|
params['xscale'] = params['scale']
|
||||||
|
params['yscale'] = params['scale']
|
||||||
|
if not params.has_key('xscale'):
|
||||||
|
params['xscale'] = 1.0
|
||||||
|
if not params.has_key('yscale'):
|
||||||
|
params['yscale'] = 1.0
|
||||||
|
|
||||||
|
pic_width = float(params['width'])
|
||||||
|
pic_height = float(params['height'])
|
||||||
|
|
||||||
|
if params.has_key('autoscale'):
|
||||||
|
wordlength = w.calc_length()
|
||||||
|
wordheight = w.calc_height()
|
||||||
|
#print wordlength, wordheight
|
||||||
|
#print pic_width, pic_height
|
||||||
|
fw = pic_width / wordlength
|
||||||
|
fh = pic_height / wordheight
|
||||||
|
#print fw, fh
|
||||||
|
if fw < fh: scale_faktor = fw
|
||||||
|
else: scale_faktor = fh
|
||||||
|
params['xscale'] = scale_faktor
|
||||||
|
params['yscale'] = scale_faktor
|
||||||
|
else:
|
||||||
|
scale_faktor = 1.0
|
||||||
|
|
||||||
|
# berechne immer den richtigen Startpunkt, je nach Bündigkeit
|
||||||
|
if params.has_key('align'):
|
||||||
|
xstart = float(params['x'])
|
||||||
|
if params['align'] == 'left':
|
||||||
|
x = xstart
|
||||||
|
elif params['align'] == 'center':
|
||||||
|
word_length = w.calc_length()
|
||||||
|
x = xstart * scale_faktor + (pic_width - word_length * scale_faktor)/2.0
|
||||||
|
else:
|
||||||
|
word_length = w.calc_length()
|
||||||
|
x = xstart * scale_faktor + pic_width - word_length * scale_faktor
|
||||||
|
params['xstart'] = x
|
||||||
|
else:
|
||||||
|
params['xstart'] = params['x']
|
||||||
|
|
||||||
|
if params.has_key('yalign'):
|
||||||
|
ystart = float(params['y'])
|
||||||
|
if params['yalign'] == 'top':
|
||||||
|
y = 0.0
|
||||||
|
elif params['yalign'] == 'center':
|
||||||
|
word_height = w.calc_height()
|
||||||
|
y = ystart * scale_faktor + (pic_height - word_height * scale_faktor)/2.0
|
||||||
|
elif params['yalign'] == 'bottom':
|
||||||
|
y = ystart * scale_faktor + pic_height - word_height * scale_faktor
|
||||||
|
else:
|
||||||
|
y = ystart
|
||||||
|
params['ystart'] = y
|
||||||
|
else:
|
||||||
|
params['ystart'] = params['y']
|
||||||
|
|
||||||
|
scalebegin = '''<g transform="translate($xstart,$ystart) scale(${xscale},${yscale})">
|
||||||
|
'''
|
||||||
|
scaleend = ''' </g>'''
|
||||||
|
svg = Template( scalebegin ).substitute(params) + wordsvg + scaleend
|
||||||
|
return svg
|
||||||
|
|
||||||
def write_random_font_line( config, fontinfos, data ):
|
def write_random_font_line( config, fontinfos, data ):
|
||||||
''' erzeugt den SVG Teil des Bildes aus einem Hintergrundbild und
|
''' erzeugt den SVG Teil des Bildes aus einem Hintergrundbild und
|
||||||
mehreren in Einzelbereichen zufällig platzierten Einzelbildern '''
|
mehreren in Einzelbereichen zufällig platzierten Einzelbildern '''
|
||||||
# TODO Bild aus Zufallspositionen von Einzelkomponenten
|
# TODO Bild aus Zufallspositionen von Einzelkomponenten
|
||||||
pass
|
return
|
||||||
|
|
||||||
class Word:
|
class Word:
|
||||||
"""Berechnet die x/y Daten jedes Buchstabn zu einem Wort bzw. mehreren
|
"""Berechnet die x/y Daten jedes Buchstabn zu einem Wort bzw. mehreren
|
||||||
@@ -59,22 +137,23 @@ class Word:
|
|||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return self.line
|
return self.line
|
||||||
def calc_length(self):
|
def calc_length(self):
|
||||||
|
glyph_space = float(self.params['glyph_space'])
|
||||||
deltax = 0.0
|
deltax = 0.0
|
||||||
for c in self.line:
|
for c in self.line:
|
||||||
g = self.font.GlyphGet(c)
|
g = self.font.GlyphGet(c)
|
||||||
deltax = g.GetLength() + deltax
|
deltax = g.GetLength() + deltax + glyph_space
|
||||||
return deltax
|
return deltax
|
||||||
|
def calc_height(self):
|
||||||
|
max_y = 0.0
|
||||||
|
for c in self.line:
|
||||||
|
g = self.font.GlyphGet(c)
|
||||||
|
new_y = g.GetHeight()
|
||||||
|
if new_y > max_y:
|
||||||
|
max_y = new_y
|
||||||
|
return max_y
|
||||||
def GetSVG(self):
|
def GetSVG(self):
|
||||||
params = self.params
|
params = self.params
|
||||||
# berechne immer den richtigen Startpunkt, je nach Bündigkeit
|
|
||||||
if params['align'] == 'left':
|
|
||||||
x = float(params['x'])
|
x = float(params['x'])
|
||||||
elif params['align'] == 'center':
|
|
||||||
word_length = self.calc_length()
|
|
||||||
x = float(params['x'] + (params['length'] - word_length)/2.0)
|
|
||||||
else:
|
|
||||||
word_length = self.calc_length()
|
|
||||||
x = float(params['x'] + word_length - params['length'])
|
|
||||||
y = params['y']
|
y = params['y']
|
||||||
glyph_space = float(params['glyph_space'])
|
glyph_space = float(params['glyph_space'])
|
||||||
|
|
||||||
@@ -110,7 +189,7 @@ class Glyph:
|
|||||||
def GetLength(self):
|
def GetLength(self):
|
||||||
return float(self.GetAttribute('xstep'))
|
return float(self.GetAttribute('xstep'))
|
||||||
def GetHeight(self):
|
def GetHeight(self):
|
||||||
return float(self.GetAttribute('ystep'))
|
return float(self.GetAttribute('ymax'))
|
||||||
def GetSVG(self, content):
|
def GetSVG(self, content):
|
||||||
t = Template(self.template)
|
t = Template(self.template)
|
||||||
svg = t.substitute(content)
|
svg = t.substitute(content)
|
||||||
@@ -177,8 +256,8 @@ def create_picture(config, fontinfos, data, pic_path):
|
|||||||
|
|
||||||
svgstr = ''
|
svgstr = ''
|
||||||
|
|
||||||
begin, end = create_picture_frame( config )
|
picbegin, picend = create_picture_frame( config )
|
||||||
svgstr = svgstr + begin
|
svgstr = svgstr + picbegin
|
||||||
|
|
||||||
# gehe alle Zeilen die im Bild enthalten sein müssen durch
|
# gehe alle Zeilen die im Bild enthalten sein müssen durch
|
||||||
lines = config.get('globals', 'lines').split(',')
|
lines = config.get('globals', 'lines').split(',')
|
||||||
@@ -201,16 +280,26 @@ def create_picture(config, fontinfos, data, pic_path):
|
|||||||
font = fontinfos[fontname]
|
font = fontinfos[fontname]
|
||||||
|
|
||||||
# hol dir die Eckdaten für die Zeile
|
# hol dir die Eckdaten für die Zeile
|
||||||
# x, y, align, length
|
# x, y, align, width, height
|
||||||
params = dict(config.items(linename))
|
lineparams = dict(config.items(linename))
|
||||||
|
|
||||||
picstr = write_font_line( content, font, params )
|
# falls nix angegeben, dann aus hol defaults aus globalen daten
|
||||||
|
if not lineparams.has_key('width'):
|
||||||
|
lineparams['width'] = config.get('globals', 'width')
|
||||||
|
if not lineparams.has_key('height'):
|
||||||
|
lineparams['height'] = config.get('globals', 'height')
|
||||||
|
if not lineparams.has_key('x'):
|
||||||
|
lineparams['x'] = 0.0
|
||||||
|
if not lineparams.has_key('y'):
|
||||||
|
lineparams['y'] = 0.0
|
||||||
|
|
||||||
|
picstr = write_font_line( content, font, lineparams )
|
||||||
if picstr: svgstr = svgstr + picstr
|
if picstr: svgstr = svgstr + picstr
|
||||||
|
|
||||||
randstr = write_random_font_line( content, font, params)
|
randstr = write_random_font_line( content, font, lineparams)
|
||||||
if randstr: svgstr = svgstr + randstr
|
if randstr: svgstr = svgstr + randstr
|
||||||
|
|
||||||
svgstr = svgstr + end
|
svgstr = svgstr + picend
|
||||||
|
|
||||||
if options.dry:
|
if options.dry:
|
||||||
print svgstr
|
print svgstr
|
||||||
|
|||||||
Reference in New Issue
Block a user