<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Sealyu

    --- 博客已遷移至: http://www.sealyu.com/blog

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      618 隨筆 :: 87 文章 :: 225 評(píng)論 :: 0 Trackbacks
    找到兩篇相關(guān)帖子,mark一下:
    一。
    首先在model上要有一個(gè)ImageFiled字段,
    同時(shí) 模板上對(duì)應(yīng)放一個(gè)<input type="file" name = "file">,
    以下就是視圖的代碼了,
    import Image
    import StringIO
    from datetime import datetime
    def add_topic(request):
           file_obj = request.FILES.get('file', None)   
           if file_obj:
                 data = file_obj['content']
                 f = StringIO.StringIO(data)
                 image = Image.open(f)
                 image = image.convert('RGB')
                 abs_name = '%s_%s_%s' %(str(request.user),"
                        str(datetime.today()).replace(':', '-')[:-7],"
                        file_obj['filename'])
                  image.save(file(abs_name, 'wb'))
            return HttpResponseRedirect("/forum/forum/")

    二。

    談?wù)刣jango中圖片上傳的2種處理方式

    關(guān)鍵字: django 上傳圖片 pil

        首先申明該文使用的django 版本為svn 版本,我每天都在更新python 是2.5,pil 也是最新的版本。

        通常情況下用django上傳圖片我們會(huì)定義一個(gè)django.forms.Form的子類,比如:

    Python代碼 復(fù)制代碼
    1. # coding: utf-8  
    2.   
    3. import django.forms as forms  
    4.   
    5. class PictureForm(forms.Form):   
    6.     # ......     
    7.     # 圖片  
    8.     imagefile = forms.ImageField()  
    9.     # ......  

         然后我們?cè)诜?wù)端會(huì)定義一個(gè)函數(shù)來(lái)處理圖片上傳,我們先來(lái)看看一般的做法:

    Python代碼 復(fù)制代碼
    1. # coding: utf-8  
    2.   
    3. from django.http import HttpResponse  
    4.   
    5. def addPicture(request):  
    6.     if request.method == 'POST':  
    7.         form = PictureForm(request.POST, request.FILES)  
    8.         if form.is_valid():  
    9.             f = request.FILES["imagefile"]  
    10.             # des_origin_path 為你在服務(wù)器上保存原始圖片的文件物理路徑  
    11.             des_origin_f = open(des_origin_path, "ab")  
    12.             for chunk in f.chunks():  
    13.                 des_origin_f.write(chunk)  
    14.             des_origin_f.close()  
    15.               
    16.             # 圖片文件被保存在硬盤上后,你可以用pil的Image.open打開(kāi)進(jìn)行處理,比如改變大小,加水印等等  

         在上面這種傳統(tǒng)的做法中,是把圖片文件保存到硬盤上后,再由pil圖形庫(kù)從硬盤上加載,再進(jìn)行圖片處理,明顯多了很多的硬盤IO操作,如果你是一個(gè)圖片處理量很大的應(yīng)用,顯然不想看到這樣的局面。那我們來(lái)看看另外一個(gè)做法:

    Python代碼 復(fù)制代碼
    1. # coding: utf-8  
    2.   
    3. from django.http import HttpResponse  
    4. import ImageFile  
    5.   
    6. def addPicture(request):  
    7.     if request.method == 'POST':  
    8.         form = PictureForm(request.POST, request.FILES)  
    9.         if form.is_valid():  
    10.             f = request.FILES["imagefile"]  
    11.             parser = ImageFile.Parser()  
    12.             for chunk in f.chunks():  
    13.                 parser.feed(chunk)  
    14.             img = parser.close()  
    15.             # 在img被保存之前,可以進(jìn)行圖片的各種操作,在各種操作完成后,在進(jìn)行一次寫(xiě)操作  
    16.             img.save("yoursavepath")  

         在上面的做法中,我們利用pil的ImageFile直接從django接收的數(shù)據(jù)流中構(gòu)建出圖形對(duì)象,進(jìn)行處理后,在保存,減少了硬盤的讀操作。現(xiàn)在網(wǎng) 上有些例子使用StringIO對(duì)象來(lái)作為pil Image.open的輸入,經(jīng)過(guò)我多次嘗試,在ubuntu以及winxp、centos上都要報(bào)異常,我想可能跟pil的版本有關(guān),或許以前的低版本 pil的確可以處理。



    posted on 2008-09-24 23:11 seal 閱讀(8273) 評(píng)論(0)  編輯  收藏 所屬分類: Python
    主站蜘蛛池模板: 四虎在线视频免费观看视频| a免费毛片在线播放| 91精品免费不卡在线观看| 久久久青草青青国产亚洲免观| 日韩国产欧美亚洲v片| 日本a级片免费看| 校园亚洲春色另类小说合集| 日本高清免费网站| 美女视频黄频a免费观看| 国产一级理论免费版| 免费很黄无遮挡的视频毛片| 亚洲综合色在线观看亚洲| 中文字幕在线免费观看视频| 久久99国产亚洲精品观看| 99爱在线精品视频免费观看9| 亚洲欧洲日本精品| 欧美三级在线电影免费| 大桥未久亚洲无av码在线| 亚洲AV无码乱码在线观看牲色| GOGOGO高清免费看韩国| 亚洲国产成人久久综合碰碰动漫3d| 麻花传媒剧在线mv免费观看| 亚洲中文字幕乱码AV波多JI| 四虎成人精品在永久免费| 亚洲一级片免费看| 久久精品国产亚洲AV电影 | 自拍偷区亚洲国内自拍| 免费人成在线观看播放国产| 精品免费久久久久国产一区| 精品日韩亚洲AV无码一区二区三区| 亚洲国产精品免费观看| 黄网站色成年片大免费高清| 亚洲成AV人片在线观看| 毛片免费在线观看网址| 免费精品国产自产拍在线观看| 久久久婷婷五月亚洲97号色| 永久免费bbbbbb视频| 国产午夜精品免费一区二区三区 | 成年女人永久免费观看片| 久久九九久精品国产免费直播| 亚洲成a人片毛片在线|