2013-05-17 101 views
1

我有像場的形式和我的上傳功能:如何調整圖像大小?

def handle_uploaded_file(f, gallery): 
    directory = settings.GALLERIES_ROOT+'gal_'+str(gallery.id)+'/' 

    # check if directory exist 
    try: 
     if not os.path.exists(directory): 
      os.makedirs(directory) 
    except Exception, e: 
     print 'DEBUG (directory): ', e 

    # find next pic number, to improve 
    i = 1 
    for r,d,f in os.walk(directory): 
     for file in f: 
      if fl.startswith("pic"): 
       i += 1 

    extension = os.path.splitext(f.name.replace(" ", "_"))[1] 
    filename = "pic%03d%s" % (i, extension) 

    # saving 
    try: 
     with open(directory + pf + filename, 'wb+') as destination: 
      for chunk in f.chunks(): 
       destination.write(chunk) 
     return True 
    except Exception, e: 
     print 'DEBUG (file writing problem): ', e 
    return False 

,現在我想調整上傳的圖像,並將它們保存到文件ICO [數字] [擴展]圖片可以是PNG或JPG,縱向或景觀。如何用高寬比(最終在裁剪後裁剪更長的部分)做到這一點?

回答

0

這只是一個想法,你需要它PIL模塊,減少在2倍(size_index = 0.5),例如:

from tkinter import * 
from PIL.ImageTk import PhotoImage 
import os 

def images_size(filepath): 
    main= Tk() 
    imgobj = PhotoImage(file=filepath) 
    size=(imgobj.width(), imgobj.height()) 
    return size 

def imageResize(filepath, size_index): 
    from PIL import Image 
    NEAREST=0 
    file_dir=os.path.split(filepath) 
    size=images_size(filepath) # get image size 
    new_size=(int(size[0]*size_index), int(size[1]*size_index)) # set new size here 
    sourceimage = Image.open(filepath) 
    sourceimage.resize(new_size, resample=NEAREST).save(file_dir[0]+'\\ico'+file_dir[1]) 
    print(file_dir[0]+'\\ico'+file_dir[1]) 


if __name__ == '__main__': 
    imageResize('C:\\pict.png', size_index=0.5)