Django(71)图片处理器django-imagekit
介绍
ImageKit是用于处理图像的Django应用程序。如果需要从原图上生成一个长宽为50x50的图像,则需要ImageKit。
ImageKit附带了一系列图像处理器,用于调整大小和裁剪等常见任务。
安装
在安装ImageKit之前,我们需要先安装Pillow,因为ImageKit是基于Pillow和Django做的封装的第三方库
pip install pillow
然后安装django-imagekit
pip install django-imagekit
完成上述步骤后,在 Django 项目的 settings.py 文件中的 INSTALLED_APPS 添加上: 'imagekit'。
使用方法
ImageSpecField
使用定义图像规范的最简单方法是在模型类上使用 ImageSpecField:
from django.db import models
from imagekit.models import ImageSpecField
from imagekit.processors import ResizeToFill
# 用来保存上传图片相关信息的模型
class (models.Model):
name = models.CharField(max_length = 50)
# 原图
avatar = models.ImageField(upload_to = 'test_pictures')
# 注意:ImageSpecField不会生成数据库中的表
# 处理后的图片
avatar_thumbnail = ImageSpecField(
source="avatar",
processors=[ResizeToFill(100, 50)], # 处理后的图像大小, 宽×高=100×50
format='JPEG', # 处理后的图片格式
options={'quality': 100} # 处理后的图片质量
)
profile = Profile.objects.all()[0]
print profile.avatar_thumbnail.url # > /media/CACHE/images/982d5af84cddddfd0fbf70892b4431e4.jpg
print profile.avatar_thumbnail.width # > 100
ImageSpecFields的工作方式与Django的ImageFields非常相似。区别在于,它们是由ImageKit根据您给出的说明自动生成的。在上面的示例中,avatar_thumbnail是avatar 的大小调整版本,保存为质量为100的JPEG格式。
ProcessedImageField
如果您不需要保留原始图像(上例中的image);当用户上传图像时,您只需要对其进行处理并保存结果。在这些情况下,您可以使用ProcessedImageField类:
from django.db import models
from imagekit.processors import ResizeToFill
from imagekit.models import ProcessedImageField
class (models.Model):
avatar_thumbnail = ImageSpecField(
source="avatar",
processors=[ResizeToFill(100, 50)],
format='JPEG',
options={'quality': 100}
)
profile = Profile.objects.all()[0]
print profile.avatar_thumbnail.url # > /media/avatars/MY-avatar.jpg
print profile.avatar_thumbnail.width # > 100
Django(71)图片处理器django-imagekit的更多相关文章
- django实现图片上传后自动修改尺寸并保存修改后的图到数据库和本地文件系统
图片上传首先要是设置settings.py文件(与静态文件设置类似) MEDIA_ROOT = os.path.join(BASE_DIR,'media')MEDIA_URL = '/media/' ...
- 解决django关于图片无法显示的问题
http://python.usyiyi.cn/django/index.html http://m.blog.csdn.net/blog/qingyuanluofeng/44877399 http: ...
- 无状态的web应用(单个py文件的Django占位图片服务器)
本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 阅读本文建议了解Django框架的基本工作流程,了解WSGI应用,如果对以上不是很清楚,建议结 ...
- (二)无状态的web应用(单py的Django占位图片服务器)
本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 阅读本文建议了解Django框架的基本工作流程,了解WSGI应用,如果对以上不是很清楚,建议结 ...
- Django 之上下文处理器和中间件
一.上下文处理器 上下文处理器是可以返回一些数据,在全局模板中都可以使用.比如登录后的用户信息,在很多页面中都需要使用,那么我们可以放在上下文处理器中,就没有必要在每个视图函数中都返回这个对象. 在s ...
- Django实现图片上传并前端页面显示
Django实现图片上传和图片显示 开始之前我们先确认环境中已经安装了Pillow,如果没有安装,可以通过pip install Pillow来安装,这个是python的图像处理库 数据库设置 我们创 ...
- Django Admin 图片路径设置显示为图片(imageField显示方法设置)
一 使用环境 开发系统: windows IDE: pycharm 数据库: msyql,navicat 编程语言: python3.7 (Windows x86-64 executable in ...
- Django项目实践4 - Django网站管理(后台管理员)
http://blog.csdn.net/pipisorry/article/details/45079751 上篇:Django项目实践3 - Django模型 Introduction 对于某一类 ...
- Django项目实践4 - Django站点管理(后台管理员)
http://blog.csdn.net/pipisorry/article/details/45079751 上篇:Django项目实践3 - Django模型 Introduction 对于某一类 ...
随机推荐
- Linux目录同步到阿里云OSS工具ossutil
Linux目录同步到阿里云OSS工具ossutil 背景 最近公司服务用户激增,常规文件服务器不能满足需求,严重影响性能,决定将静态文件迁移到阿里云OSS,用来解决性能问题,提高用户体验.毕竟之前 ...
- oracle table()函数
PL/SQL表---table()函数用法/* PL/SQL表---table()函数用法:利用table()函数,我们可以将PL/SQL返回的结果集代替table. oracle内存表在查询和报表的 ...
- composer 包 slim使用案例,一个简单的路由解决方案
nginx配置文件修改 location / { try_files $uri /index.php$is_args$args; } 设置好nginx伪静态,把所有的请求方式都转向到index.php ...
- 洛谷P1583——魔法照片(结构体排序)
https://www.luogu.org/problem/show?pid=1583#sub 题目描述 一共有n(n≤20000)个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人. ...
- 【PHP数据结构】链表的相关逻辑操作
链表的操作相对顺序表(数组)来说就复杂了许多.因为 PHP 确实已经为我们解决了很多数组操作上的问题,所以我们可以很方便的操作数组,也就不用为数组定义很多的逻辑操作.比如在 C 中,数组是有长度限制的 ...
- Django边学边记——中间件
特点 Django中的中间件是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,用于全局修改Django的输入或输出. 每个中间件组件负责做一些特定的功能.中间件全部注册在sett ...
- springboot pom.xml
Demo project for Spring Boot <?xml version="1.0" encoding="UTF-8"?> <pr ...
- Appium和Selenium的区别和联系
https://www.cnblogs.com/lv-lxz/p/11118862.html https://blog.csdn.net/weixin_42139375/article/details ...
- redis的安装与设置开机自启动
redis 的安装配置: 可以直接去官网下载((https://redis.io/download) 解压文件到指定目录下 tar zxvf redis-5.0.7.tar.gz -C /opt/ ...
- Vue 初学
Vue 的基本代码: 概念简介:Vue.js 是目前最火的一个前端框架,只关注视图层,主要负责MVC中的V这一层 MVC 是后端的分层开发概念: MVVM是前端视图层的概念, ...