Hi all,
Ik heb het volgende probleem waar ik al bijna 4 dagen niet uitkom en zelfs google biedt geen uitkomst...
Ik ben een External Method aan het proggen om mooie grafieken mee te tekenen...Daar moet natuurlijk ook text in komen te staan.
Ik gebruik de Python Image Library om de plaatjes te maken en deze heeft ook een classe ImageFont. in de ImageFont moet dus een lettertype worden gedefinieerd voordat je deze kan gebruiken in de website. Nu heb ik een zooi lettertypes gewoon op disk (dus niet in de object database) maar het lijkt er op dat een Zope extension geen lettertype kan inlezen van Disk.
Nu heb ik dus alle fonts in de object database gezet en ik probeer nu via onderstaande code een font in te lezen..
Omdat ImageFont.load geen objecten wil hebben, heb ik het maar even weggeschreven naar een temp file.
Maar daar gaat ie ook de mist in...
Dus waar het allemaal op neer komt:
Weet iemand hoe je PIL fonts moet gebruiken in een Zope Extension.
Ik heb het volgende probleem waar ik al bijna 4 dagen niet uitkom en zelfs google biedt geen uitkomst...
Ik ben een External Method aan het proggen om mooie grafieken mee te tekenen...Daar moet natuurlijk ook text in komen te staan.
Ik gebruik de Python Image Library om de plaatjes te maken en deze heeft ook een classe ImageFont. in de ImageFont moet dus een lettertype worden gedefinieerd voordat je deze kan gebruiken in de website. Nu heb ik een zooi lettertypes gewoon op disk (dus niet in de object database) maar het lijkt er op dat een Zope extension geen lettertype kan inlezen van Disk.
Nu heb ik dus alle fonts in de object database gezet en ik probeer nu via onderstaande code een font in te lezen..
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
from cStringIO import StringIO
import os.path
def createBgImage(self, size=(500,500), minValue=0, maxValue=0, fromdate="", todate=""):
"""
Creates the graph background and the units
"""
image = Image.new('RGB',size)
draw = ImageDraw.Draw(image)
draw.line((10,10,90,90), fill=(255,255,255))
draw.line((0, 0) + image.size, fill=(255,255,255))
draw.line((0, image.size[1], image.size[0], 0), fill=(255,255,255))
#hier zit dus het probleem
sFontName = "courR12.pil"
FontFolder = getattr(self,'fonts')
sFontFile = getattr(FontFolder, sFontName)
Font_file=StringIO()
Font_file.write(sFontFile.data)
myfont = ImageFont.load(Font_file)
#draw.text((100,100), 'Dit is een test :P')
del draw
image_file=StringIO()
image.save(image_file, "GIF")
image_file.seek(0)
image_id = "test1"
if image_id in self.objectIds():
self.manage_delObjects(image_id)
self.manage_addProduct['OFSP'].manage_addImage(image_id, image_file)
image_image=getattr(self, image_id)
image_image.manage_addProperty('image_id', image_id, 'string')
return image_image |
Omdat ImageFont.load geen objecten wil hebben, heb ik het maar even weggeschreven naar een temp file.
Maar daar gaat ie ook de mist in...
Dus waar het allemaal op neer komt:
Weet iemand hoe je PIL fonts moet gebruiken in een Zope Extension.