思路:
<img alt="" src="/img/圖片真實地址" ></img>
上面是一個典型的HTML中的圖片,在django中,src對應的path會經(jīng)過url進行過濾處理,所以可以通過寫view過濾器的方式來實現(xiàn)圖片壓縮,代碼如下
url
url(r'^img/(?P<path>(.+))/$',img),
view
def img(request,path):
im=Image.open(settings.STATIC_ROOT+path)
x,y=im.size
im=im.resize((int(x/1.5),int(y/1.5)),Image.ANTIALIAS)
response = HttpResponse(mimetype="image/png")
#將PIL的image對象寫入response中,通過response返回
im.save(response, "PNG")
return response
結(jié)論:通過類似于filter的方法可以實現(xiàn)圖片壓縮,且下一個請求該圖片時,會直接調(diào)用緩存,并不會再次進行圖片壓縮。
注:對性能的影響會在驗證完成后上傳