跳转到主要内容

为Django的简易缩略图

项目描述

https://img.shields.io/pypi/v/easy-thumbnails.svg Build Status

一个强大且易于实现的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)

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_RESOLUTIONTHUMBNAIL_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)

  • 引入了别名缩略图。

  • 开始使用合理的版本号。

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适合您平台文件的文件。如果您不确定该选择哪一个,请了解更多关于安装包的信息。

源代码分发

easy_thumbnails-2.10.tar.gz (80.7 kB 查看哈希值)

上传时间 源代码

构建分发

easy_thumbnails-2.10-py3-none-any.whl (78.9 kB 查看哈希值)

上传时间 Python 3

由以下机构支持