Skip to main content
 首页 » 编程设计

python之如何用 Django 创建两个缩略图

2025年05月04日30shihaiming

我想创建两个缩略图(一个小的和一个中的)

这是我的代码(使用python2.7+django1.3):

import Image 
... 
def thumbnail(f,file_name,path): 
    small = 35,35 
    small_file_name = path+'/small_'+file_name 
    medium = 310,235 
    medium_file_name = path+'/medium_'+file_name 
 
    small_im = Image.open(f) 
    small_im.thumbnail(small) 
    small_im.save(small_file_name) 
 
    medium_im = Image.open(f) 
    medium_im.thumbnail(medium) 
    medium_im.save(medium_file_name) 

我收到这个错误:

IOError at /upload/ 
cannot identify image file 

f 是从另一个页面发布的图片文件,f = request.FILES['photo']

最后三行有些错误,我必须注释最后三行,这不是错误,但这不是我想要的。

如果我在 python shell 中运行代码,它不会引发错误:

>>> from users.upload import thumbnail 
>>> import Image 
>>> f = '/home/david/1.jpg' 
>>> file_name = 'test.jpg' 
>>> path = '/home/david' 
>>> thumbnail(f,file_name,path) 

我不明白为什么会出现错误。

请您参考如下方法:

您遇到问题是因为 f = request.FILES['photo'] 不是您假设的文件路径。相反,它是一个 Django UploadedFile .在将其路径传递给 PIL Image.open() 之前,您应该将此文件写入磁盘中的某处。

您也可以尝试传递 temporary_file_path .