图像处理Python库--图片裁剪、缩放、灰度图、圆角等

图像处理Python库

  • py-img-processor
    • 1. 安装
    • 2. 使用(Usage)
    • 2.1 运行配置
    • 2.2 图像处理
      • 处理函数
      • 图像处理参数为字符串
      • 图像处理参数为JSON
    • 命令行
    • 提取图像主色调

py-img-processor

在这里插入图片描述

Image editor using Python and Pillow.

依赖Pillow开发的Python库,用于图像编辑处理。

  • 完整文档说明
  • 项目地址:github

1. 安装

pip install py-img-processor

依赖:

  • Python >= 3.9
  • Pillow >= 8.0.0

2. 使用(Usage)

2.1 运行配置

可以通过指定环境变量PY_SETTINGS_MODULE加载配置文件:

export PY_SETTINGS_MODULE=${your_project.settings_file.py}

支持的配置项有:

配置项类型说明默认值
DEBUGbool是否debug开发模式False
PROCESSOR_MAX_FILE_SIZEint处理原图的大小限制, 单位 MB20
PROCESSOR_MAX_W_Hint处理图像,原图宽高像素限制30000
PROCESSOR_MAX_PIXELintwidth x height总像素3亿,处理前后的值都被此配置限制300000000
PROCESSOR_DEFAULT_QUALITYint图像处理后的默认质量75
PROCESSOR_TEXT_FONTstr默认字体文件,默认从系统中寻找;也可以直接传递字体文件路径Arial Unicode.ttf

注意PROCESSOR_TEXT_FONT 字体的设置是文字水印必要参数,需保证系统已安装该字体。默认值 Arial Unicode.ttf 是MacOS系统存在的字体,建议设置字体文件路径。

2.2 图像处理

测试图像 lenna-400x225.jpg (像素400x225)
请添加图片描述

处理函数

process_image_by_path(input_path, out_path, params)

参数说明:

  • input_path str,输入图像文件路径
  • out_path str, 输出图像保存路径
  • params str or json,图像处理参数,参数说明详见

图像处理参数为字符串

  • 斜线 / 隔开,区分不同的操作;
  • 逗号 , 隔开,区分操作中不同的参数;
  • 下划线 _ 隔开,key_value 的形式,区分参数的Key和Value;
  • value是复杂参数时,需要进行base64url_encode,是否需要encode查看文档参数详细说明;
from imgprocessor.utils import base64url_encode
from imgprocessor.processor import process_image_by_pathprocess_image_by_path("lenna-400x225.jpg","/tmp/output.png",# 对图片缩放、裁剪、生成圆角、并转成png存储f"resize,s_200/crop,w_200,h_200,g_center/watermark,text_{base64url_encode('Hello 世界')},color_FFF,size_20/circle,r_10/format,png",
)

输出图像 (像素200x200):
请添加图片描述

图像处理参数为JSON

  • 只是形式不同,参数和字符串形式无本质区别;
  • formatqualityinterlace三个值在JSON第一层,直接按照key: value的形式设置;
  • 其他参数都放在 actions 数组中;
process_image_by_path("lenna-400x225.jpg","/tmp/output.png",{"actions": [{"key": "resize", "s": 200},{"key": "crop", "w": 200, "h": 200, "g": "center"},# JSON形式参数, text无需encode{"key": "watermark", "text": "Hello 世界", "color": "FFF", "size": 20},{"key": "circle", "r": 10},],"format": "png",},
)

该操作与上述字符串示例参数等效。

命令行

安装库后 有可执行命令 img-processor 可以使用,通过 img-processor -h 查看参数说明。

usage: img-processor [-h] [-V] -P PATH [--action ACTION [ACTION ...]] -O OUTPUT [--overwrite]图像处理optional arguments:-h, --help            show this help message and exit-V, --version         show program's version number and exit-P PATH, --path PATH  输入图像的文件路径/目录,若是目录则批量处理目录下所有图像--action ACTION [ACTION ...]操作参数,可对同一个文件多组操作-O OUTPUT, --output OUTPUT输出图像路径,多个图像或多个操作时请设置已存在的目录--overwrite           是否覆盖输出路径中已有文件

示例:

# 对单个图像进行多个操作,actions有2个参数,会输出2个图像文件
img-processor -P lenna-400x225.jpg -O /tmp/ --action resize,s_200/format,webp resize,s_225/crop,w_225,h_225,g_center/circle/format,png --overwrite

注意:action参数仅支持字符串表达形式。

会输出2个图像文件:
/tmp/lenna-400x225-0.webp (像素355x200)
请添加图片描述

/tmp/lenna-400x225-1.png (像素225x225,圆角)
请添加图片描述

提取图像主色调

from imgprocessor.processor import extract_main_colorextract_main_color("lenna-400x225.jpg")
# 输出: "905C4C"

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

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

相关文章

nest.js关键笔记

Nest.js 介绍核心功能设计模式:IOC 控制反转 DI 依赖注入前置知识:装饰器前置知识装饰器-实现一个GET请求 Nestjs脚手架Nestjs cli 常用命令 RESTful 风格设计Nestjs 控制器控制器中常见的参数装饰器 Session 实例Nestjs 提供者**工厂模式**异步模式 Nes…

【Unity服务器01】之【AssetBundle上传加载u3d模型】

首先打开一个项目导入一个简单的场景 导入怪物资源, AssetBundle知识点: 1.指定资源的AssetBundle属性标签 (1)找到AssetBundle属性标签 (2)A标签 代表:资源目录(决定打包之后在哪…

如何给文档设置密码?电脑文件安全加密的详细操作步骤(10种方法)

在数字化时代,电脑文件的安全和隐私至关重要。通过给电脑的文件或者文件夹设置密码和加密,可以有效保护你的重要文件不被未经授权的人员访问,特别是公司的重要岗位,一些特殊的机密文件,投标文件,资金文件等…

动手学深度学习(Pytorch版)代码实践 -深度学习基础-10权重衰减

10权重衰减 """ 正则化是处理过拟合的常用方法:在训练集的损失函数中加入惩罚项,以降低学习到的模型的复杂度。 保持模型简单的一个特别的选择是使用L2惩罚的权重衰减。这会导致学习算法更新步骤中的权重衰减。 """impor…

html--好看的手机充值单页

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>线上充值-首页</title><meta content"widthdevice-width,initial-scale1.0,maximum-scale1.0,user-scalable0" name"viewport&…

maya模型仓鼠制作

小仓鼠建模&#xff08;6&#xff09;_哔哩哔哩_bilibili 20240623作品---个人评价&#xff1a;第一次做的&#xff0c;虽然有点丑&#xff0c;但是还能看&#xff01;希望后面有些进步

论文阅读--Efficient Hybrid Zoom using Camera Fusion on Mobile Phones

这是谷歌影像团队 2023 年发表在 Siggraph Asia 上的一篇文章&#xff0c;主要介绍的是利用多摄融合的思路进行变焦。 单反相机因为卓越的硬件性能&#xff0c;可以非常方便的实现光学变焦。不过目前的智能手机&#xff0c;受制于物理空间的限制&#xff0c;还不能做到像单反一…

线程封装,互斥

文章目录 线程封装线程互斥加锁、解锁认识接口解决问题理解锁 线程封装 C/C代码混编引起的问题 此处pthread_create函数要求传入参数为void * func(void * )类型,按理来说ThreadRoutine满足,但是 这是在内类完成封装,所以ThreadRoutine函数实际是两个参数,第一个参数Thread* …

【建设方案】大数据湖一体化建设方案(ppt原件)

1、背景&#xff1a;大数据湖的发展背景与建设理念 2、体系&#xff1a;大数据湖体系规划与建设思路 3、生态圈&#xff1a;探索新兴业务入湖建设模式 4、共享&#xff1a;大数据湖统一访问共享规划 5、运营&#xff1a;大数据湖一体化运营管理建设 &#xff08;本方案及更多方…

Kafka~基础原理与架构了解

Kafka是什么 Kafka我们了解一直认为是一个消息队列&#xff0c;但是其设计初&#xff0c;是一个&#xff1a;分布式流式处理平台。流平台具有三个关键功能&#xff1a; 消息队列&#xff1a;发布和订阅消息流&#xff0c;这个功能类似于消息队列&#xff0c;这也是 Kafka 也被…

Comfyui-ChatTTS-OpenVoice 为ComfyUI添加语音合成、语音克隆功能

‍‍ 生成多人播客&#xff1a; Comfyui-ChatTTS是一个开源的GitHub项目&#xff0c;致力于为ComfyUI添加语音合成功能。该项目提供了一系列功能强大的节点和模型&#xff0c;支持用户创建和复用音色&#xff0c;支持多人对话模式的生成&#xff0c;并提供了导出音频字幕文件的…

“Jedis与Redis整合指南:实现高效的Java应用与Redis交互“

目录 #. 概念 1. 导入jedis依赖 2. 写一个类&#xff08;ping通redis&#xff09; 3. String字符串使用 3.1 set&#xff0c;get方法使用&#xff08;设值&#xff0c;取值&#xff09; 3.2 mset&#xff0c;mget方法使用&#xff08;设置多个值&#xff0c;取多个值&…

怎么在vscode里运行一个cpp文件

文章目录 1.需要下载g编译器&#xff0c;或clang&#xff08;快&#xff0c;但是优化效果没有g好&#xff09;2.新建文件夹和cpp文件&#xff08;tasks.json&#xff09;3.怎么在vscode里调试(launch.json)4.怎么设置让中断输出的字符是中文&#xff01;5.飞机大战 1.需要下载g…

iis下asp.netcore后台定时任务会取消

问题 使用BackgroundService或者IHostedService做后台定时任务的时候部署到iis会出现不定时定时任务取消的问题&#xff0c;原因是iis会定时的关闭网站 解决 应用程序池修改为AlwaysRunning 修改web.config <?xml version"1.0" encoding"utf-8"?…

Android studio登录Google账号超时的解决方法

确保自己已经打开了代理&#xff08;科学上网&#xff09;在设置-外观与行为-系统设置-HTTP代理 中打开“自动检测代理设置”&#xff1a; 再次重新尝试登录Google账号&#xff0c;登陆成功&#xff01; 学术会议征稿 想要了解国内主办的覆盖学科最全最广的学术会议&#xff0c…

代码-功能-python-爬取博客网标题作者发布时间

环境&#xff1a; python 3.8 代码&#xff1a; # 爬取博客园内容 # https://www.cnblogs.com/import re from lxml import etree import requests import json import threading from queue import Queue import pymysql import timeclass HeiMa:def __init__(self):# 请…

k8s 部署 ruoyi 前后端分离项目

本文视频版 https://www.bilibili.com/video/BV17ugkePEeN 参考 https://blog.csdn.net/qq_50247813/article/details/136934090 https://gitee.com/nasaa/RuoYi-Vue-cloud https://www.itsgeekhead.com/tuts/kubernetes-129-ubuntu-22-04-3/ https://kubernetes.io/docs/se…

【漏洞复现】畅捷通T+ keyEdit.aspx SQL漏洞

0x01 产品简介 畅捷通 T 是一款灵动&#xff0c;智慧&#xff0c;时尚的基于互联网时代开发的管理软件&#xff0c;主要针对中小型工贸与商贸企业&#xff0c;尤其适合有异地多组织机构(多工厂&#xff0c;多仓库&#xff0c;多办事处&#xff0c;多经销商)的企业&#xff0c;…

用户态协议栈06-TCP三次握手

最近由于准备软件工程师职称考试&#xff0c;然后考完之后不小心生病了&#xff0c;都没写过DPDK的博客了。今天开始在上次架构优化的基础上增加TCP的协议栈流程。 什么是TCP 百度百科&#xff1a;TCP即传输控制协议&#xff08;Transmission Control Protocol&#xff09;是…

LabVIEW程序退出后线程仍在运行问题

LabVIEW程序退出后&#xff0c;线程仍在运行的问题可能源于资源管理不当、未正确终止循环、事件结构未处理、并发编程错误以及外部库调用未结束等方面。本文将从这些角度详细分析&#xff0c;探讨可能的原因和解决方案&#xff0c;并提供预防措施&#xff0c;帮助开发者避免类似…