基于模板图像和任意文本的动态地图标记生成
django-markers的Python项目详细描述
使用模板图像和任意文本的动态地图标记生成器。
为什么
有时你需要在地图上使用很多标记,其中很多是相似的, 但有点不同,使用文本标签,甚至不同的颜色或 不透明。这会帮你的。
理论上,你也可以用它来描述模因,但我认为 还有其他的东西。
如何
可以通过三种方式引用标记:使用django模板标记,通过 url参数,或者在python中,使用Marker类。首选 方法是模板标记,我不建议使用直接url请求, 因为它每次都需要对应用程序服务器进行命中。
使用模板标记:
这将生成一个指向新创建的标记的媒体url,该标记基于 template.png,文本42,位于3像素右侧,以及3像素 从模板的左上角向下,不透明度为50%,a 色调偏移105,并对文本使用十六进制颜色#333333。所有的 参数(第一个除外)是可选的:
{%loadmarkers%}{%marker'path/to/template.png'text='42'text_x=3text_y=3opacity=0.5hue=105text_colour='333333'%}
通常,您将在模板中使用此选项将标记路径分配给 javascript变量:
<script> var marker1 = "{%marker'path/to/template.png'text='1'%}"; var marker2 = "{%marker'path/to/template.png'text='3'hue=105%}"; </script>
在javascript中包含url之后,您可以使用 它们只是现有静态文件的URL。
使用直接链接
传递给模板标记的参数可以在url中传递:
https://localhost:8000/markers/path/to/template.png?text=42&opacity=0.5&text_x=3&text_y=3&text_colour=333333&hue=105
使用python模型
标记生成与实例化模型一样简单:
frommarkers.modelsimportMarkermymarker=Marker("path/to/template.png",text="42",opacity=0.5,text_x=3,text_y=3,text_colour="333333",hue=105)
模板
传递到django-markers的模板路径必须是 应用程序,并以此引用。例如,如果你有一个模板 mapping/static/mapping/img/markers/mytemplate.png,您的参数 正在查找的是:mapping/img/markers/mytemplate.png。
如果直接调用url,则将此路径附加到url 喜欢这样:
https://localhost:8000/markers/mapping/img/markers/mytemplate.png?hue=105&opacity=0.8
关于文本定位
默认情况下,我们试图沿着x/y轴中心的文本,如果这是你的 意图,也不要具体说明。指定不带y值的x值 假设y居中,反之亦然。
关于模板图像的注释
你可以在模板中使用任何你喜欢的图像,但是 色调偏移从红色(0)开始,并通过光谱前进到红色 同样在360,你最好使用redish图像作为模板。 否则,不指定hue的请求将与那些请求不同步 将hue设置为1的。
安装
您可以使用pip:
$ pip install django-markers
或者您可以从github安装它:
$ pip install git+https://github.com/danielquinn/django-markers.git#egg=django-markers
然后在您的settings.py:
INSTALLED_APPS=(..."markers",)
如果你想使用直接的url请求,你需要添加这个 给你的urls.py:
url(r"^some/arbitrary/path/",include("markers.urls")),
例如,在您的urls.py:
url(r"^mapping/markers/",include("markers.urls")),
要求
我们在这里做图像处理,所以需要PIL。你应该 不过,使用Pillow,因为这是针对它开发的。 此外,需要numpy来处理色调偏移。双方都愿意 如果按照上面的安装说明进行操作,请自动安装。
除了这些python依赖项之外,如果您 打算通过调用指定的url来使用动态生成。
许可
整个项目是在gpl-3下授权的,但是使用的默认字体是 根据Apache2.0授权。这两个许可证都在COPYING/下可用。