python | pyvips,一个神奇的 Python 库
本文来源公众号“python”,仅用于学术分享,侵权删,干货满满。
原文链接:pyvips,一个神奇的 Python 库!
大家好,今天为大家分享一个神奇的 Python 库 - pyvips。
Github地址:https://github.com/libvips/pyvips
在图像处理领域,高效和快速的图像处理工具对于开发者来说至关重要。pyvips 是一个强大的 Python 库,基于 libvips 图像处理库,提供高效、快速且节省内存的图像处理能力。pyvips 支持多种图像格式,并且能够执行各种复杂的图像处理任务,如裁剪、缩放、旋转、滤波等。本文将详细介绍 pyvips 库,包括其安装方法、主要特性、基本和高级功能,以及实际应用场景,帮助全面了解并掌握该库的使用。
1 安装
要使用 pyvips 库,首先需要安装它。可以通过 pip 工具方便地进行安装。
以下是安装步骤:
pip install pyvips
安装完成后,可以通过导入 pyvips 库来验证是否安装成功:
import pyvips
print("pyvips 库安装成功!")
2 特性
-
高效性:基于
libvips,比其他图像处理库(如 PIL、OpenCV)更快且更节省内存。 -
多格式支持:支持多种图像格式,如 JPEG、PNG、TIFF、GIF 等。
-
丰富的图像处理功能:提供多种图像处理操作,如裁剪、缩放、旋转、滤波等。
-
管道操作:支持管道操作,便于处理大图像或批量图像。
-
易于扩展:提供简洁的 API,支持自定义扩展。
3 基本功能
3.1 加载和保存图像
使用 pyvips,可以方便地加载和保存图像。
import pyvips# 加载图像
image = pyvips.Image.new_from_file('example.jpg')# 保存图像
image.write_to_file('output.jpg')
3.2 图像裁剪
pyvips 提供了图像裁剪功能。
import pyvips# 加载图像
image = pyvips.Image.new_from_file('example.jpg')# 裁剪图像
cropped_image = image.crop(100, 100, 200, 200)# 保存裁剪后的图像
cropped_image.write_to_file('cropped_output.jpg')
3.3 图像缩放
pyvips 支持图像缩放。
import pyvips# 加载图像
image = pyvips.Image.new_from_file('example.jpg')# 缩放图像
scaled_image = image.resize(0.5)# 保存缩放后的图像
scaled_image.write_to_file('scaled_output.jpg')
3.4 图像旋转
pyvips 支持图像旋转。
import pyvips# 加载图像
image = pyvips.Image.new_from_file('example.jpg')# 旋转图像
rotated_image = image.rot(90)# 保存旋转后的图像
rotated_image.write_to_file('rotated_output.jpg')
4 高级功能
4.1 图像滤波
pyvips 支持多种图像滤波操作。
import pyvips# 加载图像
image = pyvips.Image.new_from_file('example.jpg')# 应用高斯滤波
filtered_image = image.gaussblur(5)# 保存滤波后的图像
filtered_image.write_to_file('filtered_output.jpg')
4.2 管道操作
pyvips 支持管道操作,可以方便地处理大图像或批量图像。
import pyvips# 加载图像
image = pyvips.Image.new_from_file('example.jpg')# 应用一系列操作
processed_image = image.crop(100, 100, 300, 300).resize(0.5).gaussblur(3)# 保存处理后的图像
processed_image.write_to_file('processed_output.jpg')
4.3 图像合并
pyvips 支持图像合并操作。
import pyvips# 加载图像
image1 = pyvips.Image.new_from_file('example1.jpg')
image2 = pyvips.Image.new_from_file('example2.jpg')# 水平合并图像
merged_image = image1.join(image2, 'horizontal')# 保存合并后的图像
merged_image.write_to_file('merged_output.jpg')
5 实际应用场景
5.1 网站图像处理
在网站开发中,通过 pyvips 对上传的图像进行裁剪、缩放和优化,以提高网站加载速度和用户体验。
import pyvips# 加载上传的图像
image = pyvips.Image.new_from_file('upload.jpg')# 裁剪图像
cropped_image = image.crop(0, 0, 800, 800)# 缩放图像
scaled_image = cropped_image.resize(0.5)# 保存处理后的图像
scaled_image.write_to_file('optimized_output.jpg')
5.2 批量图像处理
在批量图像处理任务中,通过 pyvips 高效地处理大量图像,如缩放、旋转和滤波。
import os
import pyvips# 定义图像处理函数
def process_image(input_path, output_path):image = pyvips.Image.new_from_file(input_path)processed_image = image.resize(0.5).gaussblur(2)processed_image.write_to_file(output_path)# 批量处理图像
input_dir = 'input_images'
output_dir = 'output_images'
for filename in os.listdir(input_dir):if filename.endswith('.jpg'):input_path = os.path.join(input_dir, filename)output_path = os.path.join(output_dir, filename)process_image(input_path, output_path)
5.3 图像分析
在图像分析任务中,通过 pyvips 提取图像特征并进行分析,如直方图分析、颜色统计等。
import pyvips# 加载图像
image = pyvips.Image.new_from_file('example.jpg')# 计算图像直方图
histogram = image.hist_find()# 显示直方图信息
print(histogram)
6 总结
pyvips 库是一个功能强大且易于使用的图像处理工具,能够帮助开发者在 Python 项目中高效地进行图像处理。通过支持多格式图像、多种图像处理操作、管道操作和高效的内存管理,pyvips 能够满足各种复杂的图像处理需求。本文详细介绍了 pyvips 库的安装方法、主要特性、基本和高级功能,以及实际应用场景。希望本文能帮助大家全面掌握 pyvips 库的使用,并在实际项目中发挥其优势。
THE END !
文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。
相关文章:
python | pyvips,一个神奇的 Python 库
本文来源公众号“python”,仅用于学术分享,侵权删,干货满满。 原文链接:pyvips,一个神奇的 Python 库! 大家好,今天为大家分享一个神奇的 Python 库 - pyvips。 Github地址:https…...
STM32利用FreeRTOS实现4个led灯同时以不同的频率闪烁
在没有接触到FreeRTOS时,也没有想过同时叫两个或两个以上的led灯闪烁的想法,接触后,发现如果想叫两个灯同时以不同的频率闪烁,不能说是不可能,就算是做到了也要非常的麻烦。但是学习了FreeRTOS后,发现要想同…...
深入Laravel事件系统:创建与使用事件的指南
Laravel的事件系统是一种强大的机制,它允许你将应用程序的行为封装成事件,然后在适当的时候触发这些事件。这不仅有助于代码的解耦,还提高了应用程序的可维护性和可扩展性。本文将详细介绍如何在Laravel中创建和使用事件,包括事件…...
element-ui操作表格行内容如何获取当前行索引?
需求: 根据每个用户的提交次数、撤回次数,动态计算出实际次数,并且提交次数不能小于撤回次数 <template><div><el-table:data"tableData"style"width: 80%"border><el-table-columnprop"date&…...
代发考生战报:南京考场华为售前HCSP H19-411考试通过
代发考生战报:南京考场华为售前HCSP H19-411考试通过,客服给的题库非常稳定,考试遇到2个新题,剩下全是题库里的原题,想考的放心考吧,考场服务挺好,管理员带着做签名和一些考试说明介绍清楚&…...
【Spring Boot】Spring原理:Bean的作用域和生命周期
目录 Spring原理一. 知识回顾1.1 回顾Spring IOC1.2 回顾Spring DI1.3 回顾如何获取对象 二. Bean的作用域三. Bean的生命周期 Spring原理 一. 知识回顾 在之前IOC/DI的学习中我们也用到了Bean对象,现在先来回顾一下IOC/DI的知识吧! 首先Spring IOC&am…...
MinIO:开源对象存储解决方案的领先者
MinIO:开源对象存储解决方案的领先者 MinIO 是一款开源的对象存储系统,致力于提供高性能、可伸缩、安全的数据存储解决方案。 官方解释:MinIO 是一个基于Apache License v2。0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适…...
15、电科院FTU检测标准学习笔记-基本性能
作者简介: 本人从事电力系统多年,岗位包含研发,测试,工程等,具有丰富的经验 在配电自动化验收测试以及电科院测试中,本人全程参与,积累了不少现场的经验 ———————————————————…...
古建筑倾斜在线监测系统:科技守护历史的创新实践
在文化遗产保护的广阔领域中,古建筑的健康监测占据着举足轻重的地位。然而,传统的监测方法往往受限于布线复杂、安装难度大以及对古建筑本体可能造成的伤害等问题。近年来,一种新型的古建筑倾斜在线监测系统应运而生,它…...
DP(2) | Java | LeetCode 62, 63, 343, 96 做题总结(96 未完)
62.不同路径 我的代码(报错) 写的过程中感到很迷惑的点:①二维数组和这道题目的对应弄不清除,m n的初始化 是 dp[m][n] 还是 dp[n][m] ② class Solution {public int uniquePaths(int m, int n) {int[][]dp new int[m1][n1];d…...
Ubuntu实战续篇:Apache httpd轻松搭建高效代理服务器
Ubuntu实战续篇:Apache httpd轻松搭建高效代理服务器 一、前言二、Ubuntu下的Apache配置文件概览三、配置并启用 Apache 代理服务 作者:高玉涵 时间:2024.7.11 21:06 博客:blog.csdn.net/cg_i 环境:Ubuntu 22.04.4 LTS…...
Linux 程序卡死的特殊处理
一、前言 Linux环境。 我们在日常编写的程序中,可能会出现一些细节问题,导致程序卡死,即程序没法正常运行,界面卡住,也不会闪退... 当这种问题出现在客户现场,那就是大问题了。。。 当我们暂时还无法排…...
(C++字符串02) 反转字符串中的单词
151、反转字符串中的单词 先将字符串的里的多余空格去掉,时间复杂度:O(n),再将字符串整体反转,时间复杂度:O(n),最后反转每一个单词,时间复杂度:O(n); class Solution { public:string reverseWords(stri…...
一致性Hash问题及解决方案
Hash算法的应用场景 请求的负载均衡 Nginx的ip_hash策略可以在客户端ip不发生变化的情况下,将其发出的请求始终路由到同一个目标服务器上,实现会话粘滞,避免处理session共享问题。 如果没有ip_hash策略,可以通过维护一张映射表的…...
【接口设计】如何设计统一 RESTful 风格的数据接口
如何设计统一 RESTful 风格的数据接口 1.版本控制1.1 通过 URL1.2 通过自定义请求头1.3 通过 Accept 标头 2.过滤信息3.确定 HTTP 的方法4.确定 HTTP 的返回状态5.定义统一返回的格式 近年来,随着移动互联网的发展,各种类型的客户端层出不穷。如果不统一…...
【备战秋招】——算法题目训练和总结day3
【备战秋招】——算法题目训练和总结day3😎 前言🙌BC149简写单词题解思路分析代码分享: dd爱框框题解思路分析代码分享: 除2!题解思路分析代码分享: 总结撒花💞 😎博客昵称ÿ…...
Git 操作总结
1. 安装、Git 环境配置 1.1 安装 Git 官方版本可以在 Git 官方网站下载:打开 https://git-scm.com/download/win,选择相应版本即可。 Git 安装完成后,可以在开始菜单中看到 Git 的三个启动图标(Git Bash、Git CMD、Git GUI&…...
若依 ruoyi-vue SpringBoot highlight-textarea 输入框敏感词关键词高亮标红(二)
参考文章,非常感谢大佬的分享 实现可高亮的输入框 — HighlightTextarea GitHub:highlight-textarea 可看作者上一篇文章 若依 ruoyi-vue SpringBoot聊天敏感词过滤sensitive-word(一) 效果图 审核时,输入框高亮敏感词ÿ…...
33 IRF配置思路
IRF配置思路网络括谱图 主 Ten-GigabitEthernet 1/0/49 Ten-GigabitEthernet 1/0/50 Ten-GigabitEthernet 1/0/51 备 Ten-GigabitEthernet 2/0/49 Ten-GigabitEthernet 2/0/50 Ten-GigabitEthernet 2/0/51 思路 主 1 利用console线进入设备的命令行页面去更改…...
Dify中的RAG和知识库
一.RAG 基本架构 当用户提问 “美国总统是谁?” 时,系统并不是将问题直接交给大模型来回答,而是先将用户问题在知识库中进行向量搜索,通过语义相似度匹配的方式查询到相关的内容(拜登是美国现任第46届总统…࿰…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
