iT邦幫忙

2022 iThome 鐵人賽

DAY 26
0

前言、摘要

目前資料庫上傳的圖片大小都不一樣,在顯示的時候除了很凌亂之外,也會影響排版的效果,如果在前端設定圖片大小的話又會被伸縮。我們今天會透過**django-resized**這個工具,幫助我們在上傳圖片的時候就設定好圖片的尺寸,搭配限制圖片檔案大小的機制,可以更好的管理圖片。


概念說明

**django-resized**這項工具除了可以設定圖片的尺寸之外,還可以設定照片裁切的方式,以及儲存圖片的格式。

今天我們預計將所有上傳的圖片都裁切成400 x 400,保留照片的中心並儲存成.png的格式。


本日成果

Untitled

首先我們要安裝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指定裁切的方式,有以下選項

  • ['top', 'left']:保留左上角。
  • ['middle', 'center']:保留圖片中心。
  • ['bottom', 'right']:保留圖片右下角。

force_format則是儲存圖片的格式。


心得、結語

**django-resized**雖然沒辦法最精準的切割圖片,但對於只是要簡單限制圖片大小來說還是很夠用了。

參考資料

  1. https://github.com/un1t/django-resized

台南不需要米其林

  1. 專案網址
  2. 專案程式碼
  3. 專案文件與鐵人賽文章
  4. 參賽團隊 台南巷弄美食獵人


上一篇
Day25 系統監控與警示
下一篇
Day27 分析訪客資訊 使用GA
系列文
台南不需要米其林30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言