wiz*_*g64 11 javascript python django canvas python-imaging-library
我正在尝试获取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)
Aco*_*orn 19
import re
datauri = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=='
imgstr = re.search(r'base64,(.*)', datauri).group(1)
output = open('output.png', 'wb')
output.write(imgstr.decode('base64'))
output.close()
Run Code Online (Sandbox Code Playgroud)
或者如果您需要将其加载到PIL中:
import cStringIO
tempimg = cStringIO.StringIO(imgstr.decode('base64'))
im = Image.open(tempimg)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7143 次 |
| 最近记录: |