Django响应式图像库django-pictures

2024-02-03 22:44
文章标签 图像 django 响应 pictures

本文主要是介绍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

这篇关于Django响应式图像库django-pictures的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/675647

相关文章

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

利用Django框架快速构建Web应用:从零到上线

随着互联网的发展,Web应用的需求日益增长,而Django作为一个高级的Python Web框架,以其强大的功能和灵活的架构,成为了众多开发者的选择。本文将指导你如何从零开始使用Django框架构建一个简单的Web应用,并将其部署到线上,让世界看到你的作品。 Django简介 Django是由Adrian Holovaty和Simon Willison于2005年开发的一个开源框架,旨在简

简单的角色响应鼠标而移动

actor类 //处理移动距离,核心是找到角色坐标在世界坐标的向量的投影(x,y,z),然后在世界坐标中合成,此CC是在地面行走,所以Y轴投影始终置为0; using UnityEngine; using System.Collections; public class actor : MonoBehaviour { public float speed=0.1f; CharacterCo

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

【python计算机视觉编程——7.图像搜索】

python计算机视觉编程——7.图像搜索 7.图像搜索7.1 基于内容的图像检索(CBIR)从文本挖掘中获取灵感——矢量空间模型(BOW表示模型)7.2 视觉单词**思想****特征提取**: 创建词汇7.3 图像索引7.3.1 建立数据库7.3.2 添加图像 7.4 在数据库中搜索图像7.4.1 利用索引获取获选图像7.4.2 用一幅图像进行查询7.4.3 确定对比基准并绘制结果 7.

【python计算机视觉编程——8.图像内容分类】

python计算机视觉编程——8.图像内容分类 8.图像内容分类8.1 K邻近分类法(KNN)8.1.1 一个简单的二维示例8.1.2 用稠密SIFT作为图像特征8.1.3 图像分类:手势识别 8.2贝叶斯分类器用PCA降维 8.3 支持向量机8.3.2 再论手势识别 8.4 光学字符识别8.4.2 选取特征8.4.3 多类支持向量机8.4.4 提取单元格并识别字符8.4.5 图像校正

HalconDotNet中的图像特征与提取详解

文章目录 简介一、边缘特征提取二、角点特征提取三、区域特征提取四、纹理特征提取五、形状特征提取 简介   图像特征提取是图像处理中的一个重要步骤,用于从图像中提取有意义的特征,以便进行进一步的分析和处理。HalconDotNet提供了多种图像特征提取方法,每种方法都有其特定的应用场景和优缺点。 一、边缘特征提取   边缘特征提取是图像处理中最基本的特征提取方法之一,通过检

超越IP-Adapter!阿里提出UniPortrait,可通过文本定制生成高保真的单人或多人图像。

阿里提出UniPortrait,能根据用户提供的文本描述,快速生成既忠实于原图又能灵活调整的个性化人像,用户甚至可以通过简单的句子来描述多个不同的人物,而不需要一一指定每个人的位置。这种设计大大简化了用户的操作,提升了个性化生成的效率和效果。 UniPortrait以统一的方式定制单 ID 和多 ID 图像,提供高保真身份保存、广泛的面部可编辑性、自由格式的文本描述,并且无需预先确定的布局。