最近在使用django做图片上传的时候,发现一个问题就是,有些在别处下载过来的图片,如果不修改名称就使用的话,导致的结果就是,有时候直接输出会出现显示不了图片的情况,经过检查才发现,是因为图片的名称有特殊字符,导致输出失败,于是决定一下图片的命名方式;
下面是是我对图片进行截切的函数代码;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| def upload_large_image_file(file, type='man'): '''文件上传函数,上传的文件夹一定要存在''' if file: size = 480 parser = ImageFile.Parser() for content in file.chunks(): parser.feed(content) img = parser.close()
width, height = img.size if width > size: delta = width / size height = int(height / delta) img.thumbnail((size, height), Image.ANTIALIAS)
name, ext = os.path.splitext(os.path.basename(file.name)) name = uuid.uuid4().hex file_name = os.path.join('upload/'+type+'/large',name+'_large'+ext) path_name = os.path.join(MEDIA_ROOT, file_name) img.save(path_name)
return(file_name) return(file_name)
def upload_middle_image_file(file, type='man'): '''文件上传函数,上传的文件夹一定要存在''' if file: size = 320 parser = ImageFile.Parser() for content in file.chunks(): parser.feed(content) img = parser.close()
width, height = img.size if width > size: delta = width / size height = int(height / delta) img.thumbnail((size, height), Image.ANTIALIAS)
name, ext = os.path.splitext(os.path.basename(file.name)) name = uuid.uuid4().hex file_name = os.path.join('upload/'+type+'/middle',name+'_middle'+ext) path_name = os.path.join(MEDIA_ROOT, file_name) img.save(path_name)
return(file_name) return(file_name)
def upload_small_image_file(file,type='man'): '''文件上传函数,上传的文件夹一定要存在''' if file: size = 100 parser = ImageFile.Parser() for content in file.chunks(): parser.feed(content) img = parser.close()
width, height = img.size if width > size: delta = width / size height = int(height / delta) img.thumbnail((size, height), Image.ANTIALIAS)
name, ext = os.path.splitext(os.path.basename(file.name)) name = uuid.uuid4().hex file_name = os.path.join('upload/'+type+'/small',name+'_small'+ext) path_name = os.path.join(MEDIA_ROOT, file_name) img.save(path_name)
return(file_name) return(file_name)
|