小编wiz*_*g64的帖子

使用Django将html5画布加载到PIL图像中

我正在尝试获取html5画布的内容并将其传递给我的django服务器,然后将其用PIL进行操作并保存为PNG.这是我到目前为止所拥有的:

从HTML表单中,用户单击"更新"按钮,画布的内容 - 使用canvas.toDataURL() - 被转储到通过POST表单提交的文本框中.最终这将是自动的,但不是现在.

<input type="text" id="canvasData" name="canvasData"/>
<input type='button' value="update" onclick='jscript:updateData();'>
<canvas id="sketch"></canvas>
<script type="text/javascript">
    function jscript:updateData() {
        $('#canvasData')[0].value = $('canvas')[0].toDataURL();
    }
</script>
Run Code Online (Sandbox Code Playgroud)

canvasData的形式为'data:image/png; base64,iVBORw0KGgoAAAA ... etc ... ='当它被发送过来时.然后我在django处理它:

from PIL import Image
...
canvasData = request.POST.get('canvasData', '')
im = Image.somehowLoad(canvasData)
...
im.save('canvas.png')
Run Code Online (Sandbox Code Playgroud)

而这就是我被困住的地方.我无法弄清楚如何获取base64编码的数据网址以使用PIL将图像加载到可用的形式.

谢谢!

编辑:这是底部评论的代码:

>>> d
'data:image/png;base64,iVBORw0K'
>>> d.strip('data:image/png;base64,')
'VBORw0K'
Run Code Online (Sandbox Code Playgroud)

javascript python django canvas python-imaging-library

11
推荐指数
1
解决办法
7143
查看次数

Django模型字段的默认值是否可以由依赖于外部父模型的函数定义?

我试图将默认值Report的费用基于父模型的属性.我不想这样做save(),因为如果他们选择在保存之前覆盖该值,则需要向用户显示该字段.

以下是我尝试过的三种方法,除了只传递函数指针(即没有()).我跑的时候会出错python manage.py shell.

#1
from django.db import models

class Job(models.Model):
    veryImportant = models.IntegerField()
    def get_fee(self):
        return 2 * self.veryImportant

class Report(models.Model):
    job = models.ForeignKey(Job)
    overridableFee = models.DecimalField(default=job.get_fee(), max_digits=7, decimal_places=2)

#gives...
#AttributeError: 'ForeignKey' object has no attribute 'get_fee'

#2
from django.db import models

class Job(models.Model):
    veryImportant = models.IntegerField()

class Report(models.Model):
    job = models.ForeignKey(Job)
    overridableFee = models.DecimalField(default=self.set_fee(), max_digits=7, decimal_places=2)
    def set_fee(self):
        overridableFee =  2 * self.job.veryImportant

#gives...
#NameError: name 'self' is not defined …
Run Code Online (Sandbox Code Playgroud)

python django django-models

7
推荐指数
1
解决办法
6131
查看次数