图像处理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_path

process_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_color

extract_main_color("lenna-400x225.jpg")
# 输出: "905C4C"

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Excel数据恢复,4个技巧挽救重要数据

在数字化时代,Excel表格已经成为我们工作、学习乃至生活中不可或缺的一部分。它们承载着我们的数据、计划、分析和决策,如同一张张承载着智慧与汗水的地图,指引我们前行。然而,当这些宝贵的数据意外丢失或被误删时,我们…

【Linux操作系统】进程地址空间与动态库加载

当系统执行一个依赖动态库的可执行程序时,系统不仅要将该可执行程序加载到内存中还要由加载器将动态库加载到内存中(静态库没有),因此必须要让加载器知道该动态库的名称,系统会默认在/lib64路径下查找,解决…

I/O系统

1. I/O接口 接口可以看做两个系统或两个部件之间的交接部分,它既可以是两种硬设备之间的连接电路,也可以是两个软件之间的共同逻辑边界。 I/O接口通常是指主机与I/O设备之间设置的一个硬件电路及其相应的软件控制。 2. 程序查询方式 程序查询方式是一…

深圳比创达|EMC与EMI一站式解决方案:从源头解决,满足您的需求

随着科技的飞速发展,电子产品日益普及,电磁兼容性(EMC)与电磁干扰(EMI)问题也逐渐凸显。 一、EMC与EMI的概述 EMC(电磁兼容性)是指电子设备在共同的电磁环境中能执行各自功能的互不…

TTS x Hallo: 免费数字人头在线生成

是一个利用了百度 Hallo 和 Parler/WhisperSpeech TTS 项目实现的可说话、嘴型匹配的数字人头在线 Space

向日葵API集成服务:三大优势助力企业搭建专属远控方案

为了方便企业用户更加灵活的搭建满足各自需求的软件解决方案,降低开发和部署门槛,很多软件方案供应商提供了多样化的合作模式。 以贝锐向日葵远程控制为例,他们就向客户提供了基础的SaaS服务模式、私有化部署模式、SDK嵌入模式,以…

VUE模板语法(超详细讲解)

大家好,我是DX3906,坚持从工作和生活中不断学习,提炼,沉淀,最终建立自己的强势领域! Vue 使用一种基于 HTML 的模板语法,使我们能够声明式地将其组件实例的数据绑定到呈现的 DOM 上。所有的 Vue…

设计模式原则——接口隔离原则

设计模式原则 设计模式示例代码库地址: https://gitee.com/Jasonpupil/designPatterns 接口隔离原则 要求程序员尽量将臃肿庞大的接口拆分为更小的和更具体的接口,让接口中只包含客户感兴趣的方法接口隔离原则的目标是降低类或模块之间的耦合度&…

文华财经7macd预警指标公式源码

文华财经7macd预警指标公式源码: DIFF:EMA(CLOSE,12) - EMA(CLOSE,26); DEA:EMA(DIFF,9); MACD:2*(DIFF-DEA),COLORSTICK; JC:CROSS(DIFF,DEA); SC:CROSSDOWN(DIFF,DEA); N1:BARSLAST(JC)1; N2:BARSLAST(SC)1; X:(HHV(H,N16)-LLV(L,N16))/LLV(L,N16)*100; …

D13005-ASEMI低频开关三极管D13005

编辑:ll D13005-ASEMI低频开关三极管D13005 型号:D13005 品牌:ASEMI 封装:TO-220 批号:2024 沟道:NPN 电流:4A 电压:400V 安装方式:直插式封装 特性&#xff1…

idea配置JAVA

idea项目用的gradle,配置项目java两个地方 1、project structure 菜单: file-》project structure,如图设置你要的java,如果没有,就点击Add SDK增加你要的版本并选择 2、settings 菜单: file-》settings

一站式AI服务平台:MaynorAI助您轻松驾驭人工智能

一站式AI服务平台:MaynorAI助您轻松驾驭人工智能 在当前的数字化时代,人工智能(AI)技术已经成为推动各行各业创新发展的核心动力。为了更好地满足企业和个人用户对AI服务的需求,MaynorAI 作为一个领先的一站式调用国内…

分享HTML显示2D/3D粒子时钟

效果截图 实现代码 线上体验&#xff1a;three.jscannon.js Web 3D <!DOCTYPE html> <head> <title>three.jscannon.js Web 3D</title><meta charset"utf-8"><meta name"viewport" content"widthdevice-width,ini…

【UE开发】游戏库存UI系统Demo

1.项目介绍 1.描述&#xff1a;一种用于存储记录玩家物品的游戏内可视化操作系统。 2.演示&#xff1a;https://www.bilibili.com/video/BV1f53neVEfW/?vd_source50dea901fd12253f417c48b937975b0d 3.大纲&#xff1a; 4.样式&#xff1a; 2.W_Inventory_Main_01&#xff08;…

DigiRL:让 AI 自己学会控制手机

类似于苹果此前发布的Ferret-UI 的安卓开源平替。主要用于在 Android 设备上识别 UI 和执行指令&#xff0c;不同的是它利用了离线到在线强化学习&#xff08;Offline-to-Online RL&#xff09;&#xff0c;能够快速适应应用更新或 UI 变化。

从移动切换到电信IP:详细介绍两种方法

在当前的互联网环境中&#xff0c;用户可能会因为各种原因需要切换网络服务提供商&#xff0c;比如从移动切换到电信。这种切换不仅涉及到网络服务的变更&#xff0c;还可能意味着IP地址的改变。那么&#xff0c;移动的怎么切换成电信的IP&#xff1f;下面一起来了解一下吧。 方…

技术突破:llamafile一键部署大模型,释放AI潜力

目录 一、引言二、什么是llamafile&#xff1f;1、设计目标2、技术构成3、与传统部署方式的对比4、一键部署的优势 三、核心特性1、一键部署的便捷性2、跨平台支持3、独立可执行文件4、简化的分发流程5、技术细节6、用户体验7、安全性和隐私 四、部署流程详解1、下载模型2、操作…

VUE 修改密码功能+密码强度校验

效果图 <template><el-dialogtitle"修改密码":visible.sync"dialog":before-close"cancel":close-on-click-modal"false"width"500px":modal"false"><el-form ref"form" :model"…

Java nio 的线程通信机制线程通信Pipe

Java的Pipe是一种新的线程通信机制&#xff0c;传统的线程通信可以是通过共享内存的方式&#xff0c;socket等方式&#xff0c;而Pipe是通过Java NIO 通信的方式实现共享内存&#xff0c;优点类似于go语言的管道 先上代码 public static void main(String[] args) throws IOEx…

智能充电桩网关,构建高效充电网络

近年来我国新能源汽车的增长速度出现明显的上升趋势&#xff0c;但是其充电桩的发展还比较缓慢。目前在充电桩系统设计期间仍存在一些问题&#xff0c;主要表现在充电设施短缺、充电难等问题&#xff0c;这些问题的发生均会在一定程度上限制新能源汽车的发展&#xff0c;这就需…