Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Django上传图片生成成缩略图的类

Django上传图片生成成缩略图的类

原创
作者头像
用户8983410
修改于 2021-11-03 05:00:33
修改于 2021-11-03 05:00:33
1.2K00
代码可运行
举报
运行总次数:0
代码可运行

这段代码通过pil生成缩略图,主要通过save函数保存缩略图,自定义了图片的保存位置和原图片位置,可以自己更改,可以指定缩略图的大小。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from PIL import Image
from cStringIO import StringIO
from django.core.files.uploadedfile import SimpleUploadedFile
class Photo(models.Model):

#from sharejs.com
title = models.CharField(max_length = 100)
image = models.ImageField(upload_to ="photos/originals/%Y/%m/")
image_height = models.IntegerField()
image_width = models.IntegerField()
thumbnail = models.ImageField(upload_to="photos/thumbs/%Y/%m/")
thumbnail_height = models.IntegerField()
thumbnail_width = models.IntegerField()
caption = models.CharField(max_length = 250, blank =True)

def __str__(self):
    return "%s"%self.title

def __unicode__(self):
    return self.title

def save(self, force_update=False, force_insert=False, thumb_size=(180,300)):

    image = Image.open(self.image)

    if image.mode not in ('L', 'RGB'):
        image = image.convert('RGB')

    # save the original size
    self.image_width, self.image_height = image.size

    image.thumbnail(thumb_size, Image.ANTIALIAS)

    # save the thumbnail to memory
    temp_handle = StringIO()
    image.save(temp_handle, 'png')
    temp_handle.seek(0) # rewind the file

    # save to the thumbnail field
    suf = SimpleUploadedFile(os.path.split(self.image.name)[-1],
                             temp_handle.read(),
                             content_type='image/png')
    self.thumbnail.save(suf.name+'.png', suf, save=False)
    self.thumbnail_width, self.thumbnail_height = image.size

    # save the image object
    super(Photo, self).save(force_update, force_insert)</pre> 

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
django上传图片,ImageField
今天看django的时候,突然发现model里有个ImageField,原以为django的model只是一个ORM的框架,没想到连上传图片到服务器都可以搞定,于是结合例子尝试了一下。 ImageField需要PIL的支持,所以没装PIL这个库的需要先安装。 首先建立两个Model: class Item(models.Model): name = models.CharField(max_length=250) description = models.TextField()
Bob.Chen
2018/05/02
2.6K0
Django+xadmin打造在线教育平台(一)
代码 github下载  一、前言 代码下载:  开发环境:     python:  3.6.4     Django: 2.0.2 后台管理:xadmin 1.1.项目介绍 系统概括: 系统具有完整的用户登录注册以及找回密码功能,拥有完整个人中心。 个人中心: 修改头像,修改密码,修改邮箱,可以看到我的课程以及我的收藏。可以删除收藏,我的消息。 导航栏: 公开课,授课讲师,授课机构,全局搜索。 点击公开课–> 课程列表,排序-搜索。热门课程推荐,课程的分页。 点击课程–> 课程详情页中对课程进行收藏,
zhang_derek
2018/04/11
5.9K1
Django+xadmin打造在线教育平台(一)
Django xadmin图片上传与缩略图处理
默认情况下,StdImageField 存储图像而不修改文件名。 如果您想使用更一致的文件名,可以使用内置的上传调用 比如:
菲宇
2019/06/11
1.4K0
Django开发在线教育平台--学习整理(一)
首先,打开cmd,cd到存放django项目的文件夹,创建一个新工程(也可以用虚拟环境virtualenv):
SimonDM
2018/05/09
3.1K4
Django开发在线教育平台--学习整理(一)
Django+xadmin打造在线教育平台(五)
代码 github下载 八、课程详情页功能的实现 8.1.课程列表  (1)配置urls MxOnline/urls中 path("course/", include('course.urls', namespace="course")), course里面新建urls.py # course/urls.py from django.urls import path,re_path from .views import CourseListView # 要写上app的名字 app_name = "co
zhang_derek
2018/04/11
1.7K0
Django+xadmin打造在线教育平台(五)
013:Django商城项目规划与环境搭建
本章知识点 1、商城项目介绍 2、数据建模 3、环境搭建 知识点讲解 功能块 版本 优化思想
李玺
2021/11/22
3960
013:Django商城项目规划与环境搭建
django admin 给 字段 增加 HTML 样式(显示图片、设置字体颜色、超链接、按钮等)
django admin 后台样式默认情况下都是默认的样式,有时候我们需要在 admin 显示一张图片、或者更改一个文案的显示颜色等等,该怎办呢?
卓越笔记
2023/02/18
3.1K0
django admin 给 字段 增加 HTML 样式(显示图片、设置字体颜色、超链接、按钮等)
django admin 对 list_filter 排序
1. https://cloud.tencent.com/developer/ask/34273
卓越笔记
2023/02/18
5320
django  admin 对 list_filter 排序
广告小程序后端开发(9.获取个人中心:用户身份数据,用户发布的广告和店铺及图片)
1.获取个人中心的微信用户身份数据 1.apps/users/adminx.py中对UserProfile的序列化类进行修改为: class UserProfileModelSerializer(serializers.ModelSerializer): class Meta: model = UserProfile fields=['nickName','avatarUrl','jifen','yongjin','fensi_num'] 2.apps/users/v
玩蛇的胖纸
2019/05/24
4170
ThinkPHP5.0 图片上传生成缩略图实例代码说明
很多朋友遇到这样一个问题,图片上传生成缩略图,很多人在本机(win)测试成功,上传到linux 服务器后错误。
PHP开发工程师
2021/06/02
7870
2.Models设计
1.Models设计: 1.重构用户表: 1.在users/models.py中: from django.db import models from django.contrib.auth.models import AbstractUser from datetime import datetime # Create your models here. class UserProfile(AbstractUser): """ 用户表 """ token = model
玩蛇的胖纸
2020/05/18
4150
Django REST framework+Vue 打造生鲜超市(二)
三、Models设计 3.1.项目初始化 (1)进虚拟环境下安装 django2.0.2 djangorestframework和相关依赖mark,filter pillow  图片处理 pip install djangorestframework pip install -i https://pypi.douban.com/simple django==2.0.2 pip install markdown pip install django-filter pip install pillow
zhang_derek
2018/04/11
2.2K0
Django REST framework+Vue 打造生鲜超市(二)
零基础使用Django2.0.1打造在线教育网站(八):数据库字段的定义(下)
努力与运动兼备~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!
啃饼思录
2018/08/21
8900
Vue+Django2.0 restframework打造前后端分离的生鲜电商项目(1)
  新版的pycharm很贴心的让每一个新的项目,都自动会在一个虚拟环境中,放心的新建项目就可以了,不用考虑虚拟环境的事儿了
玩蛇的胖纸
2018/10/10
2K0
Vue+Django2.0 restframework打造前后端分离的生鲜电商项目(1)
django 获取富文本编辑器中的图片地址(缩略图、封面)
开发环境   1. python: 3.6.8   2. django==1.11.22 models.py from django.db import models from django.db.models.signals import post_save from django.contrib.auth import get_user_model from DjangoUeditor.models import UEditorField from pyquery import PyQuery as
卓越笔记
2023/02/18
6460
Django 中显示图片
在 Django 中显示图片的基本步骤包括:配置静态文件和媒体文件的处理、上传图片、以及在模板中显示图片。以下是详细步骤:
华科云商小徐
2024/08/14
3360
广告小程序后端开发(16.优惠券系统:原理流程图,奖品实验数据,生成二维码)
业务需求:在一个广告小程序内发许多其他的小程序的优惠券。 1.原理流程图 2.奖品(优惠券)实验数据 1.修改apps/ad/models.py中的Prize表类 class Prize(models
玩蛇的胖纸
2019/06/14
7750
广告小程序后端开发(16.优惠券系统:原理流程图,奖品实验数据,生成二维码)
django admin list_filter 显示外键字段
models.py class Node(models.Model): """ 节点表 """ name = models.CharField(max_length=128, unique=True, verbose_name="节点名称") # SlugField 是一个新闻术语(通常叫做短标题)。一个slug只能包含字母、数字、下划线或者是连字符,通常用来作为短标签。通常它们是用来放在地址栏的URL里的。 # 像CharField一样,你可以指定max_
卓越笔记
2023/02/18
1.1K0
【愚公系列】2022年01月 Django商城项目19-商品数据表的设计
在电商项目里面为了准确的描述商品的区别,我们抽象出来两个概念,Spu和Sku这两个概念。
愚公搬代码
2022/01/26
4690
【愚公系列】2022年01月 Django商城项目19-商品数据表的设计
越光后端开发——ygapi(2.新建Model)
1.新建Model 1.users数据 1.在apps/users/models.py中: from datetime import datetime from django.db import models from django.contrib.auth.models import AbstractUser # Create your models here. class UserProfile(AbstractUser): """ 管理员 """ name=mod
玩蛇的胖纸
2019/03/15
3780
越光后端开发——ygapi(2.新建Model)
推荐阅读
相关推荐
django上传图片,ImageField
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验