add map image composing
This commit is contained in:
parent
4f847f4e49
commit
ad58ddbbcb
4 changed files with 33 additions and 18 deletions
|
@ -1,5 +1,5 @@
|
|||
from c3nav.mapdata.models import Level
|
||||
from c3nav.mapdata.render.renderer import LevelRenderer, get_render_path # noqa
|
||||
from c3nav.mapdata.render.renderer import LevelRenderer # noqa
|
||||
|
||||
|
||||
def render_all_levels(show_accessibles=False):
|
||||
|
|
11
src/c3nav/mapdata/render/compose.py
Normal file
11
src/c3nav/mapdata/render/compose.py
Normal file
|
@ -0,0 +1,11 @@
|
|||
from django.http import HttpResponse
|
||||
from PIL import Image
|
||||
|
||||
from c3nav.mapdata.render.utils import get_render_path
|
||||
|
||||
|
||||
def get_level_image(request, level):
|
||||
im = Image.open(get_render_path('png', level.name, 'full', True))
|
||||
response = HttpResponse(content_type="image/png")
|
||||
im.save(response, 'PNG')
|
||||
return response
|
|
@ -1,25 +1,11 @@
|
|||
import os
|
||||
import subprocess
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
from django.conf import settings
|
||||
from django.db.models import Max, Min
|
||||
from shapely.affinity import scale
|
||||
from shapely.geometry import JOIN_STYLE, box
|
||||
|
||||
from c3nav.mapdata.models import Package
|
||||
|
||||
|
||||
def get_render_path(filename):
|
||||
return os.path.join(settings.RENDER_ROOT, filename)
|
||||
|
||||
|
||||
def get_dimensions():
|
||||
aggregate = Package.objects.all().aggregate(Max('right'), Min('left'), Max('top'), Min('bottom'))
|
||||
return (
|
||||
float(aggregate['right__max'] - aggregate['left__min']),
|
||||
float(aggregate['top__max'] - aggregate['bottom__min']),
|
||||
)
|
||||
from c3nav.mapdata.render.utils import get_dimensions, get_render_path
|
||||
|
||||
|
||||
class LevelRenderer():
|
||||
|
@ -33,8 +19,7 @@ class LevelRenderer():
|
|||
return level.public_geometries if self.only_public else level.geometries
|
||||
|
||||
def get_filename(self, mode, filetype, level=None):
|
||||
return get_render_path('%s%s-level-%s.%s' % (('public-' if self.only_public else ''), mode,
|
||||
(self.level.name if level is None else level), filetype))
|
||||
return get_render_path(filetype, self.level.name if level is None else level, mode, self.only_public)
|
||||
|
||||
@staticmethod
|
||||
def get_dimensions():
|
||||
|
|
19
src/c3nav/mapdata/render/utils.py
Normal file
19
src/c3nav/mapdata/render/utils.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
import os
|
||||
|
||||
from django.conf import settings
|
||||
from django.db.models import Max, Min
|
||||
|
||||
from c3nav.mapdata.models import Package
|
||||
|
||||
|
||||
def get_dimensions():
|
||||
aggregate = Package.objects.all().aggregate(Max('right'), Min('left'), Max('top'), Min('bottom'))
|
||||
return (
|
||||
float(aggregate['right__max'] - aggregate['left__min']),
|
||||
float(aggregate['top__max'] - aggregate['bottom__min']),
|
||||
)
|
||||
|
||||
|
||||
def get_render_path(filetype, level, mode, public):
|
||||
return os.path.join(settings.RENDER_ROOT,
|
||||
'%s%s-level-%s.%s' % (('public-' if public else ''), mode, level, filetype))
|
Loading…
Add table
Add a link
Reference in a new issue