目前資料庫上傳的圖片大小都不一樣,在顯示的時候除了很凌亂之外,也會影響排版的效果,如果在前端設定圖片大小的話又會被伸縮。我們今天會透過**django-resized**這個工具,幫助我們在上傳圖片的時候就設定好圖片的尺寸,搭配限制圖片檔案大小的機制,可以更好的管理圖片。
**django-resized**這項工具除了可以設定圖片的尺寸之外,還可以設定照片裁切的方式,以及儲存圖片的格式。
今天我們預計將所有上傳的圖片都裁切成400 x 400,保留照片的中心並儲存成.png的格式。
首先我們要安裝https://github.com/un1t/django-resized
在Terminal輸入以下指令:
pip install django-resized
安裝好之後import到model.py
中,我們會用到ResizedImageField
這個類別
from django_resized import ResizedImageField
接著我們修改接著我們修改Photo
的類別
class Photo(models.Model):
name = models.CharField(max_length=255)
file = ResizedImageField(size=[400, 400], crop=['middle', 'center'], force_format='PNG', upload_to='photos', validators=[validate_file_size])
place = models.ForeignKey(Place, help_text="The place that this photo come from.", on_delete=models.SET_NULL,
null=True)
我們把file那行改成使用ResizedImageField
size用來表示圖片的長寬
crop指定裁切的方式,有以下選項
force_format則是儲存圖片的格式。
**django-resized**雖然沒辦法最精準的切割圖片,但對於只是要簡單限制圖片大小來說還是很夠用了。
台南不需要米其林
- 專案網址
- 專案程式碼
- 專案文件與鐵人賽文章
- 參賽團隊 台南巷弄美食獵人