最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python的Tornado框架實(shí)現(xiàn)圖片上傳及圖片大小修改功能

 更新時(shí)間:2016年06月30日 17:24:58   作者:cangmean  
Tornado是一個(gè)異步的Python Web開發(fā)框架,同時(shí)也是一個(gè)優(yōu)秀的異步服務(wù)器開發(fā)庫(kù),這里我們將來(lái)講解一下Python的Tornado框架實(shí)現(xiàn)圖片上傳及圖片大小修改功能方面的一些重點(diǎn):

圖片的上傳

上傳圖片使用了表單提交, 下面是html部分, enctype="multipart/form-data"表示不對(duì)字節(jié)進(jìn)行編碼,上傳文件類型時(shí)需指定. input標(biāo)簽的 type="file" 指定上傳類型.

<form action="/" enctype="multipart/form-data" method="post">
  <input type="file" name="headimg">
</form>

下面是tornado接受文件的部分

class UploadHandler(BaseHandler):
  def post(self):
    # 這部分就是上傳的文件,想要查看更多可以print self.request看看
    # 該文件返回一個(gè)元素為字典的列表
    imgfile = self.request.files.get('headimg')
    for img in imgfile:
      # img有三個(gè)鍵值對(duì)可以通過(guò)img.keys()查看
      # 分別是 'filename', 'body', 'content_type' 很明顯對(duì)應(yīng)著文件名,內(nèi)容(二進(jìn)制)和文件類型
      with open('./static/uploads/' + img['filename'], 'wb') as f:
        # 文件內(nèi)容保存 到'/static/uploads/{{filename}}'
        f.write(f['body'])

這樣就可以通過(guò)/static/uploads/文件名的形式訪問(wèn)

對(duì)圖片大小進(jìn)行修改

下面將寫對(duì)圖片進(jìn)行的resize

class UploadHandler(BaseHandler):
  @tornado.web.authenticated
  def post(self):
    # 應(yīng)該寫到上面, 為了顯示寫到了函數(shù)內(nèi)
    import time
    # PIL 是 python中對(duì)圖片進(jìn)行操作的模塊, 感興趣可以去看一下
    from PIL import Image
    # 可以想文件一樣使用, 只是存放在內(nèi)存
    from cStringIO import StringIO

    # 判斷上傳文件大小
    size = int(self.request.headers.get('Content-Length'))
    if size / 1000.0 > 2000:
      self.write("上傳圖片不能大于2M.")
    imgfile = self.request.files.get('headimg')
    for img in imgfile:
      # 對(duì)文件進(jìn)行重命名
      name = str(time.strftime('%Y%m%d%'), time.localtime())\
          + '_' + self.current_user + '_headimg.png'

      with open('./static/uploads/' + name, 'wb') as f:
        # image有多種打開方式,一種是 Image.open('xx.png')
        # 另一種就是 Image.open(StringIO(buffer)) 
        im = Image.open(StringIO(img['body']))
        # 修改圖片大小resize接受兩個(gè)參數(shù), 第一個(gè)是寬高的元組數(shù)據(jù),第二個(gè)是對(duì)圖片細(xì)節(jié)的處理,本文表示抗鋸齒
        im = im.resize((72, 72), Image.ANTIALIAS)
        # 打開io 就像文件一樣
        im_file = StringIO()
        im.save(im_file, format='png')
        # 這是獲取io中的內(nèi)容
        im_data = im_file.getvalue() 
        f.write(im_data)

這樣就可以上傳的時(shí)候?qū)ξ募笮∵M(jìn)行修改

相關(guān)文章

  • Python如何輸出警告信息

    Python如何輸出警告信息

    這篇文章主要介紹了Python如何輸出警告信息,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • python pandas模塊進(jìn)行數(shù)據(jù)分析

    python pandas模塊進(jìn)行數(shù)據(jù)分析

    Python的Pandas模塊是一個(gè)強(qiáng)大的數(shù)據(jù)處理工具,可以用來(lái)讀取、處理和分析各種數(shù)據(jù),本文主要介紹了python pandas模塊進(jìn)行數(shù)據(jù)分析,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • Python定時(shí)發(fā)送天氣預(yù)報(bào)郵件代碼實(shí)例

    Python定時(shí)發(fā)送天氣預(yù)報(bào)郵件代碼實(shí)例

    這篇文章主要介紹了Python定時(shí)發(fā)送天氣預(yù)報(bào)郵件代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • python使用配置文件過(guò)程詳解

    python使用配置文件過(guò)程詳解

    這篇文章主要介紹了python使用配置文件過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 基于Python實(shí)現(xiàn)電影售票系統(tǒng)

    基于Python實(shí)現(xiàn)電影售票系統(tǒng)

    這篇文章主要介紹了通過(guò)Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的電影售票系統(tǒng),文中的示例代碼對(duì)我們學(xué)習(xí)Python有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2021-12-12
  • 三步解決python PermissionError: [WinError 5]拒絕訪問(wèn)的情況

    三步解決python PermissionError: [WinError 5]拒絕訪問(wèn)的情況

    這篇文章主要介紹了三步解決python PermissionError: [WinError 5]拒絕訪問(wèn)的情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • 詳解matplotlib技巧之縮放和投影

    詳解matplotlib技巧之縮放和投影

    我們?cè)谑褂胢atplotlib繪制圖形時(shí),有兩個(gè)重要的技巧:一種是?Scale(縮放),一種是Projection(投影),縮放和投影在matplotlib繪圖中起著至關(guān)重要的作用,它們幫助我們更好地展示和理解數(shù)據(jù),本文將詳細(xì)的給大家介紹這兩個(gè)技巧,需要的朋友可以參考下
    2024-01-01
  • Python編寫的com組件發(fā)生R6034錯(cuò)誤的原因與解決辦法

    Python編寫的com組件發(fā)生R6034錯(cuò)誤的原因與解決辦法

    pythoncom27.dll可能沒(méi)有包含manifest信息,或者沒(méi)有包含正確的manifest信息,或者系統(tǒng)中的c++ runtime library受到破壞都有可能造成這種現(xiàn)象
    2013-04-04
  • 詳解Django中六個(gè)常用的自定義裝飾器

    詳解Django中六個(gè)常用的自定義裝飾器

    這篇文章主要介紹了詳解Django中六個(gè)常用的自定義裝飾器,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Python數(shù)據(jù)分析之使用matplotlib繪制折線圖、柱狀圖和柱線混合圖

    Python數(shù)據(jù)分析之使用matplotlib繪制折線圖、柱狀圖和柱線混合圖

    matplotlib是python的一個(gè)模塊,用于繪制各種圖形,今天介紹一下折線圖的繪制,下面這篇文章主要給大家介紹了關(guān)于Python數(shù)據(jù)分析之使用matplotlib繪制折線圖、柱狀圖和柱線混合圖的相關(guān)資料,需要的朋友可以參考下
    2022-05-05

最新評(píng)論

伽师县| 磐安县| 鹤山市| 行唐县| 蒙城县| 晴隆县| 正蓝旗| 林西县| 汪清县| 土默特左旗| 绥阳县| 仁怀市| 宁安市| 金门县| 翁牛特旗| 阿克苏市| 射洪县| 宁晋县| 沙洋县| 蚌埠市| 高雄县| 南昌县| 泌阳县| 永寿县| 克山县| 靖远县| 砚山县| 章丘市| 乌拉特中旗| 专栏| 克东县| 会东县| 和顺县| 江城| 泗水县| 宾阳县| 北流市| 金阳县| 剑阁县| 当阳市| 枝江市|