图像处理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.rhkb.cn/news/362891.html

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

相关文章

第6章 复制

文章目录 前言1.配置1.1建立复制1.2断开复制1.3 安全性1.4 只读1.5 传输延迟 2. 拓扑2.1.一主一从结构2.2.一主多从结构2.3.树状主从结构 3.原理3.1复制过程 前言 复制功能,实现了相同数据的多个Redis副本。复制功能是高可用Redis的基础,满足故障恢复和…

Redis 高可用 sentinel

简介 Sentinel提供了一种高可用方案来抵抗节点故障,当故障发生时Redis集群可以自动进行主从切换,程序可以不用重启。 Redis Sentinel集群可以看成是一个Zookeeper集群,他是Redis集群高可用的心脏,一般由3-5个节点组成&#xff0…

【STM32】GPIO复用和映射

1.什么叫管脚复用 STM32F4有很多的内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用。 STM32F4系列微控制器IO引脚通过一个…

鸿蒙开发HarmonyOS NEXT (二) 熟悉ArkUI

一、构造函数 构造一个商品类Item,然后利用foreach函数循环渲染 class Item {name: stringimage: ResourceStrprice: numberdiscount: numberconstructor(name: string, image: ResourceStr, price: number, discount: number 0) {this.name name;this.image ima…

MoneyPrinterPlus:AI自动短视频生成工具-微软云配置详解

MoneyPrinterPlus可以使用大模型自动生成短视频,我们可以借助Azure提供的语音服务来实现语音合成和语音识别的功能。 Azure的语音服务应该是我用过的效果最好的服务了,微软还得是微软。 很多小伙伴可能不知道应该如何配置,这里给大家提供一…

API-元素尺寸与位置

学习目标: 掌握元素尺寸与位置 学习内容: 元素尺寸与位置仿京东固定导航栏案例实现bilibili点击小滑块移动效果 元素尺寸与位置: 使用场景: 前面案例滚动多少距离,都是我们自己算的,最好是页面滚动到某个…

常用MQ消息中间件Kafka、ZeroMQ和RabbitMQ对比及RabbitMQ详解

1、概述 在现代的分布式系统和实时数据处理领域,消息中间件扮演着关键的角色,用于解决应用程序之间的通信和数据传递的挑战。在众多的消息中间件解决方案中,Kafka、ZeroMQ和RabbitMQ 是备受关注和广泛应用的代表性系统。它们各自具有独特的特…

企业数据治理必备工具:智能元数据管理平台

当下,企业拥有海量数据,但仅拥有数据并不能释放数据价值。我们还需要深入了解数据的各种属性、来源和关系等信息。这些信息被称为“元数据”,即用于描述数据的数据。 假设,把我们每个人的身份证、户口本都当做数据,那…

模拟实现string【C++】

文章目录 全部的实现代码放在了文章末尾准备工作包含头文件定义命名空间和类类的成员变量 构造函数默认构造拷贝构造 重载赋值拷贝函数析构函数迭代器和获取迭代器迭代器获取迭代器 resize【调整size】图解 reserve【调整capacity】empty【判断串是否为空】operator[]appendpus…

超详细的Pycharm使用虚拟环境搭建Django项目并创建新的虚拟环境教程

一、什么是虚拟环境? 通过软件虚拟出来的开发环境,不是真实存在的,一般在多套环境开发时会用到。 二、为什么要使用虚拟环境? 虚拟环境为不同的项目创建不同的开发环境,开发环境内所有使用的工具包互不影响。比如项…

Android笔记-adb keycode大全

使用方法 用adb发送按键事件时,可以使用下面表中的枚举值或者直接使用数值,比如 adb shell input keyevent KEYCODE_HOME 或者 adb shell input keyevent 3 下面按三种排序方法列出所有按键的 keycode, 分别是: 按功能分 按枚…

【Linux】高级IO——五种IO模型和基本概念 ,非阻塞IO,fcntl,实现非阻塞IO,同步通信和异步通信

文章目录 Linux高级IO1. 五种IO模型1.1 阻塞IO1.2 非阻塞IO1.3 信号驱动IO1.4 IO多路转接1.5 异步IO 2. 同步通信和异步通信3. 阻塞和非阻塞 Linux高级IO 1. 五种IO模型 IO是什么? IO是计算机领域中的缩写,指的是输入/输出(Input/Output&…

设置日历程序

目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 namespace 设置日历 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void dateTimePicker1_ValueChanged(object sender, EventArgs e){richTextBox1.Text dateTimePicker1.T…

linux系统中vim ls grep等命令无法使用

linux突然vim ls grep等命令无法使用 系统配置路径被修改导致无法使用: echo $PATH 查看配置路径 添加路径 执行以下命令 export PATH$PATH:/root/bin export PATH$PATH:/usr/sbin

基于ARM的通用的Qt移植思路

文章目录 实验环境介绍一、确认Qt版本二、确认交叉编译工具链三、配置Qt3.1、修改qmake.conf3.2、创建autoConfig.sh配置文件 四、编译安装Qt五、移植Qt安装目录六、配置Qt creator6.1、配置qmake6.2、配置GCC编译器6.3、配置G编译器6.4、配置编译器套件6.5、创建应用 七、总结…

Keil Pack Installer

本文仅介绍了安装Pack,今晚2024-6-28会录制视频,详细讲解安装卸载的各种方法 前言 大家好,我是梁国庆。 收到粉丝留言,说 Keil 安装 Pack 不太明白,可不可以详细演示一下? 当然可以有,本篇安…

搭建一个简单的xxljob

数据库表结构: YyJobInfo: public class YyJobInfo {//定时任务idprivate int id;//该定时任务所属的执行器的idprivate int jobGroup;//定时任务描述private String jobDesc;//定时任务添加的时间private Date addTime;//定时任务的更新时间private D…

百问网全志D1h开发板投屏功能实现

投屏功能实现 D1系列号称点屏神器,不仅能点屏,还能用于投屏。 源码准备 百问网为 【百问网D1h开发板】提供了投屏功能需要使用的源码,直接git下载即可: git clone https://github.com/DongshanPI/DongshannezhaSTU_DLNA_Scree…

Web应用安全测试-专项漏洞(一)

Web应用安全测试-专项漏洞(一) 专项漏洞部分注重测试方法论,每个专项仅列举一个例子。实际测试过程中,需视情况而定。 文章目录 Web应用安全测试-专项漏洞(一)Web组件(SSL/WebDAV)漏…

擎耀解码汽车大灯照明系统电动调节步进电机位置反馈的解决方案

在现代汽车设计中,智能照明系统扮演着至关重要的角色。其中,汽车大灯的电动调节功能不仅提高了夜间行车的安全性,还增强了车辆的科技感和便利性。然而,要实现精准的大灯角度调节,步进电机的位置反馈机制尤为关键。擎耀…