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 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
| from __future__ import division import os import Image from django.db import models from datetime import datetime, timedelta from django.utils.translation import ugettext as _ from walkerfree.settings import MEDIA_ROOT from django.db.models.fields.files import ImageFieldFile
''' 上传图片的路径 ''' UPLOAD_ROOT = 'upload' LARGE_ROOT = 'upload/large' MIDDLE_ROOT = 'upload/middle' SMALL_ROOT = 'upload/small'
def make_large_thumb(path, size = 480): pixbuf = Image.open(path) width, height = pixbuf.size
if width > size: delta = width / size height = int(height / delta) pixbuf.thumbnail((size, height), Image.ANTIALIAS)
return pixbuf
def make_middle_thumb(path, size = 320): pixbuf = Image.open(path) width, height = pixbuf.size
if width > size: delta = width / size height = int(height / delta) pixbuf.thumbnail((size, height), Image.ANTIALIAS)
return pixbuf
def make_small_thumb(path, size = 100): pixbuf = Image.open(path) width, height = pixbuf.size
if width > size: delta = width / size height = int(height / delta) pixbuf.thumbnail((size, height), Image.ANTIALIAS)
return pixbuf
class Woman(models.Model): IS_SHOW_CHOICES = ( ('0',0), ('1',1) ) title = models.CharField(max_length=255,help_text='标题') description = models.TextField(null=False,help_text='描述') url_address = models.URLField(max_length=255,help_text='信息地址') large_image = models.ImageField(upload_to = 'upload/large') middle_image = models.ImageField(upload_to = 'upload/middle') small_image = models.ImageField(upload_to = 'upload/small')
large_image_url_address = models.URLField(null=True, blank=True, max_length=255, help_text='大图片的地址') middle_image_url_address = models.URLField(null=True, blank=True, max_length=255, help_text='中等图片的地址') small_image_url_address = models.URLField(null=True, blank=True, max_length=255, help_text='小图片的地址')
is_show = models.PositiveSmallIntegerField(default=0, choices=IS_SHOW_CHOICES,null=True,help_text='是否在最前端显示') create_date = models.DateTimeField(auto_now=True,auto_now_add=True,help_text='创建日期') update_date = models.DateTimeField(auto_now=True,auto_now_add=True,help_text='更新日期')
class Meta: verbose_name_plural = _('Woman')
def save(self): super(Woman, self).save() large_image_base, large_image_ext = os.path.splitext(os.path.basename(self.large_image.path)) middle_image_base, middle_image_ext = os.path.splitext(os.path.basename(self.middle_image.path)) small_image_base, small_image_ext = os.path.splitext(os.path.basename(self.small_image.path)) large_thumb_pixbuf = make_large_thumb(os.path.join(MEDIA_ROOT, self.large_image.name)) middle_thumb_pixbuf = make_middle_thumb(os.path.join(MEDIA_ROOT, self.middle_image.name)) small_thumb_pixbuf = make_small_thumb(os.path.join(MEDIA_ROOT, self.small_image.name))
large_relate_thumb_path = os.path.join(LARGE_ROOT, large_image_base + '_large_' + large_image_ext) middle_relate_thumb_path = os.path.join(MIDDLE_ROOT, middle_image_base + '_middle_' + middle_image_ext) small_relate_thumb_path = os.path.join(SMALL_ROOT, small_image_base + '_small_' + small_image_ext)
large_thumb_path = os.path.join(MEDIA_ROOT, large_relate_thumb_path) middle_thumb_path = os.path.join(MEDIA_ROOT, middle_relate_thumb_path) small_thumb_path = os.path.join(MEDIA_ROOT, small_relate_thumb_path)
large_thumb_pixbuf.save(large_thumb_path) middle_thumb_pixbuf.save(middle_thumb_path) small_thumb_pixbuf.save(small_thumb_path)
self.large_image = ImageFieldFile(self, self.large_image, large_thumb_path) self.middle_image = ImageFieldFile(self, self.middle_image, middle_thumb_path) self.small_image = ImageFieldFile(self, self.small_image, small_thumb_path)
super(Woman, self).save()
def __unicode__(self): return self.title
|