使用Django和PIL / Django-Photologue动态创建和保存图像

时间:2010-03-17 16:31:59

标签: django image-processing python-imaging-library photologue

我想生成一个包含动态内容的html页面,然后将结果保存为图像,并将页面显示给用户。因此,用户注册参加会议并提供他们的姓名和组织。该数据与html / css元素相结合,以显示他们的会议ID标识(他们的名称和组织在我们的会议徽标背景之上)以供预览。批准后,页面将以图像格式(PNG,PDF或JPG)保存在服务器上,以便管理员稍后将其打印到物理徽章上。我正在使用由PIL驱动的Django和django-photologue。

视图可能如下所示

# app/views.py

def badgepreview(request, attendee_id):
    u = User.objects.get(id=attendee_id)
    name = u.name
    org = u.org

    return render_to_response('app/badgepreview.html',
        {'name':name,'org':org,},
        context_instance = RequestContext(request),
    )

模板看起来像这样

{# templates/app/badgepreview.html #}
{% extends "base.html" %}
{% block page_body %}
    <div style='background:url(/site_media/img/logo_bg.png) no-repeat;'>
        <h4>{{ name }}</h4>
        <h4>{{ org }}</h4>
    </div>
{% endblock %}

很简单,但如何保存结果?或者有更好的方法来完成这项工作吗?

1 个答案:

答案 0 :(得分:0)

我唯一能想到的就是两次通过:

a)使用http://www.xhtml2pdf.com/将HTML转换为PDF格式。

b)使用类似http://www.swftools.org/gfx_tutorial.html的内容将PDF转换为图像。

我无法想象这样做会很快......

您可能最好只转换并允许他们下载PDF(即上面仅使用步骤a)或尝试直接生成徽章而不使用HTML中间步骤。