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
46
47
|
import sys
import re
from Config import *
import Pb
import base64
from Pb import Pb
class PbLandscape(Pb):
def __init__(self,
heightmap=None,
imgdata=None,
texture=None,
name=None,
):
self._required_keys = [
"heightmap",
"imgdata",
"texture",
"name",
]
def _saveImgData(self, imgdata, filename):
try:
parts = imgdata.split(';')
mime_type = parts[0] if parts[0] else 'text/plain'
data = parts[1]
charset, b64 = 'ASCII', False
for part in parts[1]:
if part.startswith('charset='):
charset = part[8:]
elif part == 'base64':
b64 = True
# Do something smart with charset and b64 instead of assuming
if b64:
plaindata = base64.b64decode(data)
else:
plaindata = data
with open(filename, 'wb') as f:
f.write(plaindata)
except Exception as e:
sys.stderr.write("ERROR: {}\n".format(str(e)));
def create(self, breakmode=""):
self.filepath = self._filename_from_url(self.params.get('texture',""), self.params.get('name',""));
self._saveImgData(self.params.get('imgdata'), self.filepath);
|