为Django的简易缩略图
项目描述
一个强大且易于实现的Django 2.2+缩略图应用
以下是一个使用快速摘要。有关更全面的信息,请在线查看完整文档或查看项目的docs目录。
重大新闻
2.8.0版本添加了对使用[svg]额外功能安装的SVG图像缩略图的支持。
当然,对SVG图像进行缩略图处理没有意义,因为它们是矢量格式,可以无损地缩放到任何大小。然而,easy-thumbnails的用户可能希望像上传和使用PNG、GIF或JPEG图像一样上传和使用SVG图像。他们并不关心格式,当然也不想将它们转换为基于像素的格式。他们想要的只是重用模板,使用templatetag thumbnail和scale标签来调整图像的大小,使其与<img src="…" width="…" height="…">中准备的尺寸相匹配。
这是通过添加一个名为 VIL 的仿真层来实现的,该仿真层的目的是与PIL库兼容。所有缩略图操作,如缩放和裁剪,都表现为基于像素的图像。此类缩略图 SVG 图像的最终文件大小当然不会改变,但它们的宽度和高度以及边界框可以进行调整,以反映缩略图图像的所需大小。
安装
运行 pip install easy-thumbnails。
将 easy_thumbnails 添加到您的 INSTALLED_APPS 设置中
INSTALLED_APPS = (
...
'easy_thumbnails',
)
运行 manage.py migrate easy_thumbnails。
示例用法
缩略图选项可以在 settings.THUMBNAIL_ALIASES 中预定义,或者在运行时在模板或 Python 代码中指定。
使用预定义别名
给定以下设置
THUMBNAIL_ALIASES = {
'': {
'avatar': {'size': (50, 50), 'crop': True},
},
}
模板
{% load thumbnail %}
<img src="{{ profile.photo|thumbnail_url:'avatar' }}" alt="" />
Python
from easy_thumbnails.files import get_thumbnailer
thumb_url = get_thumbnailer(profile.photo)['avatar'].url
手动指定大小/选项
模板
{% load thumbnail %}
<img src="{% thumbnail profile.photo 50x50 crop %}" alt="" />
Python
from easy_thumbnails.files import get_thumbnailer
options = {'size': (100, 100), 'crop': True}
thumb_url = get_thumbnailer(profile.photo).get_thumbnail(options).url
与其他缩略图程序结合使用
或者,您可以通过 {% load easy_thumbnails_tags %} 而不是传统的 {% load thumbnail %} 加载模板标签。这对于在项目中使用多个使用相同名称(thumbnail)的模板标签模块的缩略图库的项目特别有用。
{% load easy_thumbnails_tags %}
<img src="{% thumbnail profile.photo 50x50 crop %}" alt="" />
字段
您可以使用 ThumbnailerImageField(或 ThumbnailerField)来更容易地访问检索或生成缩略图图像。
例如
from easy_thumbnails.fields import ThumbnailerImageField
class Profile(models.Model):
user = models.OneToOneField('auth.User')
photo = ThumbnailerImageField(upload_to='photos', blank=True)
在模板中访问字段的预定义别名
{% load thumbnail %}
<img src="{{ profile.photo.avatar.url }}" alt="" />
在 Python 代码中访问字段的预定义别名
thumb_url = profile.photo['avatar'].url
缩略图选项
裁剪
在将图像按比例缩小以适应 size 边界之前,它首先裁剪图像的边缘以匹配所需的宽高比。
使用 crop="smart" 尝试保留图像中最有趣的部分
使用 crop="0,10" 从左侧边缘开始裁剪,并且从顶部边缘偏移 10%。通过留空维度来从单个边缘裁剪(例如,crop=",0")。通过使用负数来从右侧/底部偏移(例如,crop=”-0,-10”)。
通常与 upscale 选项一起使用,这将允许在缩放时放大图像。
quality=XX
更改输出 JPEG 缩略图的质量。默认为 85。
在 Python 代码中,这作为 get_thumbnail 方法的一个单独选项给出,而不是仅仅更改其他选项。
keep_icc_profile
如果为 True,则在保存带有定义此选项的别名的缩略图时,如果原始图像中存在 ICC 配置文件,则将其保存在缩略图中。
其他选项
有效的缩略图选项由安装的“缩略图处理器”确定。
请参阅参考文档,获取默认缩略图处理器提供的选项的完整列表。
更改
2.10 (2024-09-11)
删除对 Python-3.8 的支持。
删除对 Django-4.1 及更早版本的 support。
添加对 Django-5.1 的支持。
对动画图像格式的实验性支持。有关更多信息,请参阅文档。
修复 #642:不要缩放无尺寸信息的图像(SVG)。
修复 #366:在保存图像时保留 ICC 配置文件(如果存在)。
2.9 (2024-07-25)
添加对 Django 4.2 存储的支持(Django 5.1 中强制要求)。
2.8.5 (2023-01-09)
修复了2.8.4版本中引入的回归。对于类型为.webp的图像,没有移除quality参数。
2.8.4 (2022-12-19)
修复了处理TIFF类型图像缩略图时的问题。PIL的TiffImagePlugin不喜欢quality参数。
将已弃用的Pillow常量替换为更新的对应项。有关详细信息,请参阅https://pillow.pythonlang.cn/en/stable/releasenotes/9.1.0.html#deprecations。
2.8.3 (2022-08-02)
修复了2.8.2版本中引入的库检测回归。
2.8.2 (2022-07-31)
easy-thumbnails的安装现在可选地依赖于reportlab库。
2.8.1 (2022-01-20)
添加了对Django 4的支持。
添加了新的THUMBNAIL_IMAGE_SAVE_OPTIONS设置。
修复了#587:将SVG图像上传到S3存储的问题。
2.8.0 (2021-11-03)
添加了对缩略SVG图像的支持。这是通过添加一个名为VIL的仿真层来实现的,旨在与PIL兼容。所有缩略图操作,如缩放和裁剪,都表现得像像素图像。
从easy-thumbnails设置指令中删除了配置指令THUMBNAIL_HIGH_RESOLUTION和THUMBNAIL_HIGHRES_INFIX。
2.7.2 (2021-10-17)
添加了对Django 3.2和Python-3.10的支持。
修复了#563:在加载内容后不关闭图像。
在管理命令thumbnail_cleanup中,将print-语句替换为stdout.write。
尽可能使用Python格式字符串。
2.7.1 (2020-11-23)
添加了对Django 3.1的支持。
2.7.0 (2019-12-15)
添加了对Django 3.0的支持。
停止支持Python 2。
停止支持Django < 1.11。
停止支持Django 2.0,2.1。
2.6.0 (2019-02-03)
添加了对Django 2.2的测试(无需代码更改)。
2.5.0 (2017-10-31)
支持的Django版本为1.8或1.10+,Python 2.7为最低要求。
修复:Pickle/unpickle机器。ThumbnailerField字段不再生成缩略图。
移除了所有关于South迁移的引用。
2.4.2 (2017-09-14)
支持的Django版本现在是1.8或1.10+,Python 2.7为最低要求。
修复了在Pillow 4.2+中保存具有透明度的JPEG文件时的IOError。
修复了#450,#473:在管理命令中固定了int/string不是可调用的错误。
修复了#456:ThumbnailerFieldFile的delete方法被调用两次。
2.4.1 (2017-04-05)
新的最低要求为Django 1.4或1.7+。
修复了EXIF方向以使用transpose。
升级以避免弃用警告。
修复了在Django 1.11中app设置不工作的问题。
修复了导致自动裁剪透明图像行为不正确的错误条件检查。
Django 1.8+兼容的thumbnail_cleanup命令。
添加了easy_thumbnails_tags模板标签镜像,以允许多个缩略图库愉快地共存。
在Python 2.6上限制Pillow为其最终兼容版本。
修复了测试。
2.3 (2015-12-11)
新的Alias命名器。
避免在创建缓存时出现潜在的并发问题。
修复了对于源缩略图模型的不正确使用select_related。
移除了一些残留的处理器参数。
允许在缩略图模板标签上使用HIGH_RESOLUTION参数。
添加逻辑以正确处理延迟模型上的缩略图图像(例如,当使用.only()时)。
添加了一个data_uri过滤器,允许将图像作为数据URI内联渲染。
2.2.1 (2014-12-30)
修复:选项zoom也可以单独使用,而无需与crop结合。
2.2 (2014-10-04)
修复了Django 1.7最终版本的迁移。
修复了包含不良图像EXIF的异常。
2.1 (2014-08-13)
修复了Python 3.4安装问题。
避免由于无效EXIF数据而导致的OverflowError。
修复了导致JPEG图像保存时未优化的错误:(
JPEG文件现在可以保存为渐进式编码。默认情况下,任何大于100px的图像都将保存为渐进式。配置为THUMBNAILER_PROGRESSIVE设置。
2.0.1 (2014-04-26)
修复了旧South迁移的打包问题。
2.0 (2014-04-25)
使用Django 1.7迁移。感谢Trey Hunner。注意:如果使用South,请阅读安装文档以了解所需的设置更改。
使ThumbnailerImageField.resize_source反映扩展变化。
为scale_and_crop处理器添加target选项,允许在裁剪(或缩放)图像时设置图像焦点。
添加一个THUMBNAIL_NAMER选项,该选项接收一个用于自定义缩略图文件名的函数。
添加新的subsampling选项以减少JPEG图像的颜色子采样,在文件大小略有增加的同时提供更锐利的颜色边缘。
重新实现了thumbnail_cleanup命令。感谢Jørgen Abrahamsen。
更有效的缩略图默认存储。感谢Sandip Agarwal。
1.5 (2014-03-05)
更好地支持多个源生成器。
更新检查源和缩略图图像修改日期的方法。感谢Ben Roberts。
更好地处理thumbnail_high_resolution,包括能够通过HIGH_RESOLUTION缩略图选项显式开关。
添加了用于指定高分辨率图像处理的内部名称的配置选项。
可选的图像优化后处理程序。感谢Jacob Rief!
更多的远程存储优化。
缩略图尺寸现在可以选择缓存。感谢David Novakovic。
添加了新的zoom选项,可以生成带有每侧百分比裁剪的源图像缩略图。
添加了新的background源处理器,可以在缩放图像时添加边框颜色,以确保缩放后的图像适合给定的精确尺寸。
1.4 (2013-09-23)
通过减少查询显著提高了远程存储的速度。Brent O’Connor花了很多时间调试这个问题,所以感谢epicserve!
允许{% thumbnail %}标签也接受别名。感谢Simon Meers!
使replace_alpha能够正确工作。
修复了当图像存在于缓存中但实际不存在于存储中时引发的异常。
修复了Python 2.5兼容性问题。
1.3 (2013-06-17)
一些Django 1.5的修复。
修复了Thumbnail.url不正确工作的问题。
添加了生成标准缩略图之外的视网膜质量缩略图的功能(默认关闭)。
1.2 (2013-01-23)
Django 1.5兼容性。
修复了ImageClearableFileInput小部件的问题。
1.1 (2012-08-29)
添加了一种避免生成已存在的缩略图的方法(通过信号处理它们的其他地方)。
添加了thumbnailer_passive过滤器,允许模板在使用别名时使用非生成缩略图的功能。
1.0.3 (2012-05-30)
将异常捕获从1.0.2改为IOError。
1.0.2 (2012-05-29)
在尝试获取敏感图像的EXIF数据时捕获OSError异常。
1.0.1 (2012-05-23)
修复了easy_thumbnails.conf中的Django 1.2向后不兼容问题。
引入了thumbnail_created信号。
1.0 (2012-05-07)
引入了别名缩略图。
开始使用合理的版本号。
项目详情
下载文件
下载适合您平台文件的文件。如果您不确定该选择哪一个,请了解更多关于安装包的信息。
源代码分发
构建分发
easy_thumbnails-2.10.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d009462fcd791edf2496e5ed46d044712e1a06b7d4600e4cf2812002e9904ef5 |
|
MD5 | dbeaafc0089910359b8573bcb254ae63 |
|
BLAKE2b-256 | 863b5fe5c2c20cb08a34759cbd1ca9b8394b121785ebcb033c010a4b27b65a7a |
easy_thumbnails-2.10-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9e446fb9da1ca0cbc99bdd1fe8fdd5c38784323d64393a37e16d13cd736980b2 |
|
MD5 | b89c3c0cf1ffcd7e309d68b66135dd31 |
|
BLAKE2b-256 | 22efde1f3a7421d7a9ce2314ee7bc0d37a8264a50872e2cd5af1240798b0bbba |