欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PIL對上傳到Django的圖片進行處理并保存的實例

 更新時間:2019年08月07日 13:48:23   作者:smartwu_sir  
今天小編就為大家分享一篇PIL對上傳到Django的圖片進行處理并保存的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

1. 介紹

上傳的圖片文件:如

pic = request.FILES["picture"]
# pic是 <class 'django.core.files.uploadedfile.InMemoryUploadedFile'> 類型的數(shù)據(jù)

# 而pillow的Image.open("./xxx.jpg") 則是:

<class 'PIL.JpegImagePlugin.JpegImageFile'> 類型的數(shù)據(jù)

# 問題是如何把InMemoryUploadedFile轉(zhuǎn)化為PIL類型,并且處理之后再轉(zhuǎn)回InMemoryUploadedFile,并save

2. 把InMemoryUploadedFile轉(zhuǎn)化為PIL類型

from PIL import Image

pic = request.FILES["picture"]
im_pic = Image.open(pic)
# 這樣就把InMemoryUploadedFile轉(zhuǎn)化為了PIL類型數(shù)據(jù),pic是InMemoryUploadedFile,im_pic是PIL類型

3. 處理PIL類型的圖片數(shù)據(jù)

w, h = im_pic.size
if w >= h:
  w_start = (w-h)*0.618
  box = (w_start, 0, w_start+h, h)
  region = im_pic.crop(box)
else:
  h_start = (h-w)*0.618
  box = (0, h_start, w, h_start+w)
  region = im_pic.crop(box)

# region就是PIL處理后的正方形了

4. 將處理后的PIL類型轉(zhuǎn)化為InMemoryUploadedFile類型

from io import BytesIO
from django.core.files.uploadedfile import InMemoryUploadedFile

// 先保存到磁盤io
pic_io = BytesIO()
region.save(pic_io, im_pic.format)
// 再轉(zhuǎn)化為InMemoryUploadedFile數(shù)據(jù)
pic_file = InMemoryUploadedFile(
  file=pic_io,
  field_name=None,
  name=pic.name,
  content_type=pic.content_type,
  size=pic.size,
  charset=None
)

pic_file 就是region轉(zhuǎn)化后的InMemoryUploadedFile了

5. 保存InMemoryUploadedFile到數(shù)據(jù)庫

from ./models import Picture

p = Picture(picture=pic_file)
p.save()

以上這篇PIL對上傳到Django的圖片進行處理并保存的實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python爬蟲lxml庫處理XML和HTML文檔

    Python爬蟲lxml庫處理XML和HTML文檔

    在當今信息爆炸的時代,網(wǎng)絡上的數(shù)據(jù)量龐大而繁雜,為了高效地從網(wǎng)頁中提取信息,Python爬蟲工程師們需要強大而靈活的工具,其中,lxml庫憑借其卓越的性能和豐富的功能成為Python爬蟲領(lǐng)域的不可或缺的工具之一,本文將深入介紹lxml庫的各個方面,充分掌握這個強大的爬蟲利器
    2023-12-12
  • python使用socket高效傳輸視頻數(shù)據(jù)幀(連續(xù)發(fā)送圖片)

    python使用socket高效傳輸視頻數(shù)據(jù)幀(連續(xù)發(fā)送圖片)

    本文主要介紹了python使用socket高效傳輸視頻數(shù)據(jù)幀(連續(xù)發(fā)送圖片),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Python編程根據(jù)字典列表相同鍵的值進行合并

    Python編程根據(jù)字典列表相同鍵的值進行合并

    這篇文章主要介紹了來學習Python字典列表根據(jù)相同鍵的值進行合并的操作方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-10-10
  • Python生成隨機數(shù)的方法詳解(最全)

    Python生成隨機數(shù)的方法詳解(最全)

    Python生成隨機數(shù)的方法有很多,譬如random模塊、NumPy庫、secrets模塊等。本文為大家整理了五個生成隨機數(shù)的方法(應該是最全的了吧),希望對大家有所幫助
    2023-02-02
  • Python使用Redis實現(xiàn)作業(yè)調(diào)度系統(tǒng)(超簡單)

    Python使用Redis實現(xiàn)作業(yè)調(diào)度系統(tǒng)(超簡單)

    Redis作為內(nèi)存數(shù)據(jù)庫的一個典型代表,已經(jīng)在很多應用場景中被使用,這里僅就Redis的pub/sub功能來說說怎樣通過此功能來實現(xiàn)一個簡單的作業(yè)調(diào)度系統(tǒng)。這里只是想展現(xiàn)一個簡單的想法,所以還是有很多需要考慮的東西沒有包括在這個例子中,比如錯誤處理,持久化等
    2016-03-03
  • python獲取外網(wǎng)ip地址的方法總結(jié)

    python獲取外網(wǎng)ip地址的方法總結(jié)

    這篇文章主要介紹了python獲取外網(wǎng)ip地址的方法,實例總結(jié)了四種常用的獲取外網(wǎng)IP地址的技巧,需要的朋友可以參考下
    2015-07-07
  • pyqt5 刪除layout中的所有widget方法

    pyqt5 刪除layout中的所有widget方法

    今天小編就為大家分享一篇pyqt5 刪除layout中的所有widget方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • python生成單位陣或?qū)顷嚨娜N方式小結(jié)

    python生成單位陣或?qū)顷嚨娜N方式小結(jié)

    這篇文章主要介紹了python生成單位陣或?qū)顷嚨娜N方式小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python學習筆記之迭代器和生成器用法實例詳解

    Python學習筆記之迭代器和生成器用法實例詳解

    這篇文章主要介紹了Python學習筆記之迭代器和生成器用法,結(jié)合實例形式詳細分析了Python迭代器與生成器的功能、原理、定義及使用方法,需要的朋友可以參考下
    2019-08-08
  • python出現(xiàn)更新庫失敗A?new?release?of?pip?is?available:?23.0.1?->?23.3解決辦法

    python出現(xiàn)更新庫失敗A?new?release?of?pip?is?available:?23.0.

    學習了Python我們知道它自帶了很多的庫,同時我們還需要對某個庫進行升級,這篇文章主要給大家介紹了關(guān)于python出現(xiàn)更新庫失敗A?new?release?of?pip?is?available:?23.0.1?->?23.3的解決辦法,需要的朋友可以參考下
    2024-03-03

最新評論