我有图像字段和上传功能的表单:
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 :(得分: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)