在VIEW中,我想调整上传图像的大小,并在模型中保存2份副本并更改
答案 0 :(得分:8)
Sorl具有很强的缩略功能,也可以在模板中使用...它还会检查图像是否已经存在于文件系统中,否则它将创建新的已调整大小的文件。
取决于您尝试从中调用图片的位置。
http://thumbnail.sorl.net/docs
def image_thumb(self):
thumb = DjangoThumbnail(self.image_file, (380, 246))
return '<img src="%s" alt="%s" border="0" />' % (thumb.absolute_url, self.alt)
image_thumb.allow_tags = True
def get_thumb_url(self):
thumb = DjangoThumbnail(self.image_file, (380, 246))
return thumb.absolute_url
另外正如我所提到的,你可以直接从模板中调用它来加载任何图像。
{% load thumbnail %}
{% thumbnail url 100x100 crop,upscale %}
显然,您将调用文件顶部的加载项以及您希望显示的缩略图。关于这个的好处是你可以用这个
这样的python对象替换url{% thumbnail image.get_absolute_url 150x150 crop %}
我希望大小是自我解释的,最终作物,高档是sorl-thumbnail的功能,它将对最终图像产生各种影响。
答案 1 :(得分:3)
从这里开始,有一件事需要注意:
因此,在您看来,您应该执行以下操作:
关于第3点和第4点,我这样做:
orig_img = Image.open(self.imageFile)
orig_img_dim = orig_img.size # (orig_img_dim[0], orig_img_dim[1]) is (y, x) size of image
if (orig_img_dim[0] > 600) or (orig_img_dim[1] > 1000): # only resize images too large
orig_img.thumbnail((600, 1000), Image.ANTIALIAS)
orig_img.save(DESTINATION_FILENAME)
请注意,我只调整太大的图片(大于'缩略图'尺寸)。
答案 2 :(得分:3)
使用sorl - http://thumbnail.sorl.net/docs/
为你完成任务See this
class MyModel(models.Model):
name = models.TextField(max_length=50)
photo = ImageWithThumbnailsField(
upload_to='profiles',
thumbnail={'size': (50, 50)},
extra_thumbnails={
'icon': {'size': (16, 16), 'options': ['crop', 'upscale']},
'large': {'size': (200, 400)},
},
)
此代码可以随心所欲
答案 3 :(得分:2)
答案 4 :(得分:1)
Django Imagekit可让您指定多种图片尺寸。调整大小调整后的图像,然后您可以在视图和模板中访问它们和原始图像文件。