django的图片上传(处理图片大小,图片如果如果存在)
PIL的文档Image模块第二个例子就是讲生成缩略图的。image.thumbnail就可以了。参考:http://www.pythonware.com/library/pil/handbook/image.htm
views.py
from PIL import Image
#这个没有设置forms.py
def upload(request):
reqfile = request.FILES['photo']
#
request.FILES['file'](file是你上传输入框的名称)就是一个文件
image = Image.open(reqfile)
image.thumbnail((128,128),Image.ANTIALIAS) image.save("c:/photo/1.jpeg","jpeg") #这里是将图片都将会以1.jpeg名字保存
return HttpResponse("success.")
前台是
<form action="/upload/" method="post" enctype="multipart/form-data">
<fieldset>
<legend>上传文件</legend>
<input type="file" name="photo" />
<input type="submit" value="上传"/>
</fieldset>
</form>
但是这个方发将所有的图片保存一个名字。而且传下个图片会覆盖原来的图片 所以需要改文件名:以下是我的项目的code:
views/py
import os
import random
from juxin.app.models import Info
from PIL import Image
if 'file' in request.FILES: #
这里是重点!为什么我要判断file呢?因为如果你想不传文件(也就是这个字段为空),但是还是要传其他的字段(如:我只想传标题,而图片我不传),
那么必 须要判断下。不然会报错"Key 'file' not found in <MultiValueDict: {}>"
image = request.FILES["file"]
img= Image.open(image)
img.thumbnail((250,250),Image.ANTIALIAS)
url='photos/'+image.name
|