Django响应式图像库django-pictures

什么是响应式图像?

响应式设计是指网页在不同尺寸的设备上都有良好的显示效果。响应式设计的网页图像,就是响应式图像。

图片

django-pictures是使用现代代码(如 AVIF 和 WebP)的响应式跨浏览器图像库。

特点

  • 使用 Picture 标签的响应式 Web 图像

  • 原生电网系统支持

  • 提供带或不带 CDN 的文件

  • 地方发展的占位符

  • 迁移支持

  • Celery、Dramatiq 或 Django RQ 的异步图像处理

  • DRF 支持

安装

python3 -m pip install django-pictures

settings.py添加设置

INSTALLED_APPS = [# ...'pictures',
]# the following are defaults, but you can override them
PICTURES = {"BREAKPOINTS": {"xs": 576,"s": 768,"m": 992,"l": 1200,"xl": 1400,},"GRID_COLUMNS": 12,"CONTAINER_WIDTH": 1200,"FILE_TYPES": ["WEBP"],"PIXEL_DENSITIES": [1, 2],"USE_PLACEHOLDERS": True,"QUEUE_NAME": "pictures","PROCESSOR": "pictures.tasks.process_picture",}

如果安装了Dramatiq或Celery,将默认为异步图像处理。

占位符

该库带有动态创建的占位符,以简化本地PICTURES["USE_PLACEHOLDERS"]发展。若要启用它们,请添加以下内容以启用该设置并添加以下 URL 配置:

# urls.py
from django.urls import include, path
from pictures.conf import get_settingsurlpatterns = [# ...
]if get_settings().USE_PLACEHOLDERS:urlpatterns += [path("_pictures/", include("pictures.urls")),]

配置

纵横比:指定图像的纵横比,图像将被裁剪到指定的纵横比。纵横比指定为带斜杠的字符串在宽度和高度之间。例如16/9,将图像裁剪为16:9。

# models.py
from django.db import models
from pictures.models import PictureFieldclass Profile(models.Model):title = models.CharField(max_length=255)picture = PictureField(upload_to="avatars",aspect_ratios=[None, "1/1", "3/2", "16/9"],# template.html
{% load pictures %}
{% picture profile.picture img_alt="Spiderman" ratio="16/9" m=6 l=4 %}

如果未在模板中指定纵横比或“无”,则图像将以文件的原始纵横比提供。

只能在模板中使用已在模型上定义的纵横比。 如果提供了其他值,则模型将默认为aspect_ratios[None]。

断点:可以定义自己的断点,它们应该与您的CSS库中使用的断点相同。只需覆盖PICTURES["BREAKPOINTS"]设置即可。

网格列:网格在网页设计中非常普遍,以至于它们甚至进入了CSS。默认为 12 列,可以通过设置PICTURES["GRID_COLUMNS"]覆盖此设置。

容器宽度:容器通常用于限制布局的最大宽度, 在更大的屏幕上提高可读性。默认为1200px,可以通过PICTURES["CONTAINER_WIDTH"]设置覆盖此设置。如果不使用容器,也可以将其设置为None。

像素密度:默认1x和2x像素密度服务。

与Django Rest框架(DRF)对接

django-pictures提供了一个只读PictureField,可用于包含所有 DRF 序列化程序中可用的图片大小。

from rest_framework import serializers
from pictures.contrib.rest_framework import PictureFieldclass PictureSerializer(serializers.Serializer):picture = PictureField()

响应可以限制为单个纵横比和图像源,如下所示,向字段提供aspect_ratio和image_source参数。

from rest_framework import serializers
from pictures.contrib.rest_framework import PictureFieldclass PictureSerializer(serializers.Serializer):picture = PictureField(aspect_ratio="16/9", image_source="WEBP")

还可以向序列化程序提供可选的GET参数, 以指定要包含在响应中的纵横比和断点。参数以fieldname_为前缀,以避免与其他字段冲突。

curl http://localhost:8000/api/path/?picture_ratio=16%2F9&picture_m=6&picture_l=4
# %2F is the url encoded slash

访问结果:

{"other_fields": "…","picture": {"url": "/path/to/image.jpg","width": 800,"height": 800,"ratios": {"1/1": {"sources": {"image/webp": {"100": "/path/to/image/1/100w.webp","200": "…"}},"media": "(min-width: 0px) and (max-width: 991px) 100vw, (min-width: 992px) and (max-width: 1199px) 33vw, 25vw"}}}
}

注意:仅当指定了断点时,才会包含键media。

github:https://github.com/codingjoe/django-pictures

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/250979.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QSqlRelationalTableModel 关系表格模型

一、 1.1 QSqlRelationalTableModel继承自QSqlTableModel,并且对其进行了扩展,提供了对外键的支持。一个外键就是一个表中的一个字段 和 其他表中的主键字段之间的一对一的映射。例如,“studInfo”表中的departID字段对应的是“departments…

Spring Boot导出EXCEL 文件

主要功能:实现java导出excel到本地 JDK版本&#xff1a;openJDK 20.0.1 依赖pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchem…

Python 数据分析(PYDA)第三版(一)

原文&#xff1a;wesmckinney.com/book/ 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 关于开放版本 第 3 版的《Python 数据分析》现在作为“开放获取”HTML 版本在此网站wesmckinney.com/book上提供&#xff0c;除了通常的印刷和电子书格式。该版本最初于 2022 年…

OpenSSL:configure: error: OpenSSL library not found解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

如何使用 Google 搜索引擎保姆级教程(附链接)

一、介绍 "Google语法"通常是指在 Google 搜索引擎中使用一系列特定的搜索语法和操作符来精确地定义搜索查询。这些语法和操作符允许用户过滤和调整搜索结果&#xff0c;提高搜索的准确性。 二、安装 Google 下载 Google 浏览器 Google 官网https://www.google.c…

LNMP.

一.mysl配置 1.安装mysql yum install mysql-server -y 2.进入mysql配置文件目录 cd /etc/my.cnf.d3.编辑mysql配置文件 vim mysql-server.cnf 在[mysqld]中添加: character-set-serverutf84.启动mysql服务 systemctl start mysqld5.登入mysql mysql 6.创建数据库 cre…

中国大学生计算机设计大赛与大数据应用主题赛

中国大学生计算机设计大赛 与大数据应用主题赛 中国大学生计算机设计大赛&#xff08;简称“大赛”或4C&#xff09;始筹于2007年&#xff0c;首届于2008年&#xff0c;已经举办了16届80场赛事。是我国高校面向本科生最早的赛事之一&#xff0c;由教育部计算机类教指委发起举…

使用wda框架实现IOS自动化测试详解

目录 1、weditor元素定位工具 1.1、weditor的安装和使用 2、wda iOS自动化框架 2.1、wda概述 2.2、wda安装 2.3、wda的使用 2.3.1、全局配置 2.3.2、创建客户端 2.3.3、APP相关操作 1、启动APP 2、关闭APP 3、获取APP状态信息 4、获取当前APP的运行信息 2.3.4、设…

LLM之Agent(十一)| 多智能体框架CrewAI与AutoGen相比

基于LLM构建的Agent中有一个明显的现象就是多智能体体系结构的表现要超越单智能体&#xff0c;即使单智能体使用无可挑剔的提示策略。本文将探索另一个有趣的多智能体框架——CrewAI。 一、CrewAI整体优势 CrewAI可以应用在生成环境中。它在发言人的反应和编排上牺牲了一点灵活…

Unity | Spine动画记录

https://blog.csdn.net/linshuhe1/article/details/79792432 https://blog.csdn.net/winds_tide/article/details/128925407 1.需要的三个文件 通常制作好的 Spine 动画导出时会有三个文件&#xff1a; .png 、.json 和 .atlas&#xff1a; skeleton-name.json 或 skeleton-…

计算机网络_1.6.2 计算机网络体系结构分层的必要性

1.6.2 计算机网络体系结构分层的必要性 一、五层原理体系结构每层各自主要解决什么问题1、物理层2、数据链路层3、网络层4、运输层5、应用层 二、总结三、练习 笔记来源&#xff1a; B站 《深入浅出计算机网络》课程 本节主要介绍实现计算机网络需要解决哪些问题&#xff1f;以…

2017年苏州大学837复试机试C/C++

2017年苏州大学复试机试 要求 要求用C/C编程&#xff1b;对程序中必要的地方进行注释。上机规则 请在电脑桌面上新建一个文件夹文件夹名为考试姓名&#xff08;中文&#xff09;&#xff1b;考试完毕后&#xff0c;将所编写的文件放在上述文件中。 第一题&#xff08;20分&…

隧道穿透:常规反弹、加密反弹

目录 1、常规反弹 &#xff08;1&#xff09;Windows正向连接shell &#xff08;2&#xff09;Windows反向连接shell &#xff08;3&#xff09;Linux正向连接shell &#xff08;2&#xff09;利用Linux自带bash反弹Shell 2、加密反弹 1、常规反弹 假设在内网环境中发现…

一步步成为React全栈大师:从环境搭建到应用部署

文章目录 第一步&#xff1a;环境搭建第二步&#xff1a;了解React基础第三步&#xff1a;组件与路由第四步&#xff1a;状态管理第五步&#xff1a;接口与数据交互第六步&#xff1a;样式与布局第七步&#xff1a;测试第八步&#xff1a;构建与部署《深入浅出React开发指南》内…

【Java程序设计】【C00232】基于Springboot的抗疫物资管理系统(有论文)

基于Springboot的抗疫物资管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的抗疫物资管理系统 用户主要分为管理员和普通用户 管理员&#xff1a; 管理员可以对后台数据进行管理、拥有最高权限、具体权限有…

MySQL-----初识

一 SQL的基本概述 基本概述 ▶SQL全称: Structured Query Language&#xff0c;是结构化查询语言&#xff0c;用于访问和处理数据库的标准的计算机语言。SQL语言1974年由Boyce和Chamberlin提出&#xff0c;并首先在IBM公司研制的关系数据库系统SystemR上实现。 ▶美国国家标…

Quppy 注册教程,轻松通过欧洲银行同名转账绑定个人IBAN账号

Quppy 注册教程,轻松通过欧洲银行同名转账绑定个人IBAN账号 官网下载APP或者去香港区下载APP使用 https://quppy.com/ch/ 按照官方APP里的邮箱注册&#xff0c;填写邀请代码258258 能提升审核成功率&#xff0c;后添加电话和个人信息&#xff1b;需要说明的是&#xff1a;网站…

海外YouTube视频点赞刷单悬赏任务投资理财源码/tiktok国际版刷单理财

测试环境&#xff1a;Linux系统CentOS7.6、宝塔、PHP7.3、MySQL5.7&#xff0c;根目录public&#xff0c;伪静态Laravel5&#xff0c;开启SSL证书 前端&#xff1a;修改网站的默认文档 index.html 为第一个&#xff0c; index.php 改成第二个 &#xff0c;或者前端访问 index.…

【android】 android->profile 查看内存泄露

目录 实例讲解 各字段解释 实例讲解 各字段解释 在 Android Studio 的 Profile 视图中&#xff0c;Arrange by Stack 用于对内存分配和释放事件进行堆栈排列&#xff0c;以便更好地了解内存使用情况。以下是表上各列的一般含义&#xff1a; 1. **Call Chart (调用图)**: …

【DDD】学习笔记-领域场景分析实践

在先启阶段&#xff0c;我们确定了 EAS 的问题域与核心的业务流程&#xff0c;然后根据业务期望与愿景确定项目的业务范围&#xff0c;明确史诗级故事和主故事。这个过程既有利于我们对项目的整体理解&#xff0c;以便于确定需求列表、排定需求的优先级从而制订发布与迭代计划&…