当前位置: 首页 > news >正文

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 特性

  1. 高效性:基于 libvips,比其他图像处理库(如 PIL、OpenCV)更快且更节省内存。

  2. 多格式支持:支持多种图像格式,如 JPEG、PNG、TIFF、GIF 等。

  3. 丰富的图像处理功能:提供多种图像处理操作,如裁剪、缩放、旋转、滤波等。

  4. 管道操作:支持管道操作,便于处理大图像或批量图像。

  5. 易于扩展:提供简洁的 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操作表格行内容如何获取当前行索引?

需求&#xff1a; 根据每个用户的提交次数、撤回次数&#xff0c;动态计算出实际次数&#xff0c;并且提交次数不能小于撤回次数 <template><div><el-table:data"tableData"style"width: 80%"border><el-table-columnprop"date&…...

代发考生战报:南京考场华为售前HCSP H19-411考试通过

代发考生战报&#xff1a;南京考场华为售前HCSP H19-411考试通过&#xff0c;客服给的题库非常稳定&#xff0c;考试遇到2个新题&#xff0c;剩下全是题库里的原题&#xff0c;想考的放心考吧&#xff0c;考场服务挺好&#xff0c;管理员带着做签名和一些考试说明介绍清楚&…...

【Spring Boot】Spring原理:Bean的作用域和生命周期

目录 Spring原理一. 知识回顾1.1 回顾Spring IOC1.2 回顾Spring DI1.3 回顾如何获取对象 二. Bean的作用域三. Bean的生命周期 Spring原理 一. 知识回顾 在之前IOC/DI的学习中我们也用到了Bean对象&#xff0c;现在先来回顾一下IOC/DI的知识吧&#xff01; 首先Spring IOC&am…...

MinIO:开源对象存储解决方案的领先者

MinIO:开源对象存储解决方案的领先者 MinIO 是一款开源的对象存储系统&#xff0c;致力于提供高性能、可伸缩、安全的数据存储解决方案。 官方解释&#xff1a;MinIO 是一个基于Apache License v2。0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口&#xff0c;非常适…...

15、电科院FTU检测标准学习笔记-基本性能

作者简介&#xff1a; 本人从事电力系统多年&#xff0c;岗位包含研发&#xff0c;测试&#xff0c;工程等&#xff0c;具有丰富的经验 在配电自动化验收测试以及电科院测试中&#xff0c;本人全程参与&#xff0c;积累了不少现场的经验 ———————————————————…...

古建筑倾斜在线监测系统:科技守护历史的创新实践

​ ​​在文化遗产保护的广阔领域中&#xff0c;古建筑的健康监测占据着举足轻重的地位。然而&#xff0c;传统的监测方法往往受限于布线复杂、安装难度大以及对古建筑本体可能造成的伤害等问题。近年来&#xff0c;一种新型的古建筑倾斜在线监测系统应运而生&#xff0c;它…...

DP(2) | Java | LeetCode 62, 63, 343, 96 做题总结(96 未完)

62.不同路径 我的代码&#xff08;报错&#xff09; 写的过程中感到很迷惑的点&#xff1a;①二维数组和这道题目的对应弄不清除&#xff0c;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实战续篇&#xff1a;Apache httpd轻松搭建高效代理服务器 一、前言二、Ubuntu下的Apache配置文件概览三、配置并启用 Apache 代理服务 作者&#xff1a;高玉涵 时间&#xff1a;2024.7.11 21:06 博客&#xff1a;blog.csdn.net/cg_i 环境&#xff1a;Ubuntu 22.04.4 LTS…...

Linux 程序卡死的特殊处理

一、前言 Linux环境。 我们在日常编写的程序中&#xff0c;可能会出现一些细节问题&#xff0c;导致程序卡死&#xff0c;即程序没法正常运行&#xff0c;界面卡住&#xff0c;也不会闪退... 当这种问题出现在客户现场&#xff0c;那就是大问题了。。。 当我们暂时还无法排…...

(C++字符串02) 反转字符串中的单词

151、反转字符串中的单词 先将字符串的里的多余空格去掉&#xff0c;时间复杂度:O(n)&#xff0c;再将字符串整体反转&#xff0c;时间复杂度:O(n)&#xff0c;最后反转每一个单词&#xff0c;时间复杂度:O(n)&#xff1b; class Solution { public:string reverseWords(stri…...

一致性Hash问题及解决方案

Hash算法的应用场景 请求的负载均衡 Nginx的ip_hash策略可以在客户端ip不发生变化的情况下&#xff0c;将其发出的请求始终路由到同一个目标服务器上&#xff0c;实现会话粘滞&#xff0c;避免处理session共享问题。 如果没有ip_hash策略&#xff0c;可以通过维护一张映射表的…...

【接口设计】如何设计统一 RESTful 风格的数据接口

如何设计统一 RESTful 风格的数据接口 1.版本控制1.1 通过 URL1.2 通过自定义请求头1.3 通过 Accept 标头 2.过滤信息3.确定 HTTP 的方法4.确定 HTTP 的返回状态5.定义统一返回的格式 近年来&#xff0c;随着移动互联网的发展&#xff0c;各种类型的客户端层出不穷。如果不统一…...

【备战秋招】——算法题目训练和总结day3

【备战秋招】——算法题目训练和总结day3&#x1f60e; 前言&#x1f64c;BC149简写单词题解思路分析代码分享&#xff1a; dd爱框框题解思路分析代码分享&#xff1a; 除2&#xff01;题解思路分析代码分享&#xff1a; 总结撒花&#x1f49e; &#x1f60e;博客昵称&#xff…...

Git 操作总结

1. 安装、Git 环境配置 1.1 安装 Git 官方版本可以在 Git 官方网站下载&#xff1a;打开 https://git-scm.com/download/win&#xff0c;选择相应版本即可。 Git 安装完成后&#xff0c;可以在开始菜单中看到 Git 的三个启动图标&#xff08;Git Bash、Git CMD、Git GUI&…...

若依 ruoyi-vue SpringBoot highlight-textarea 输入框敏感词关键词高亮标红(二)

参考文章&#xff0c;非常感谢大佬的分享 实现可高亮的输入框 — HighlightTextarea GitHub:highlight-textarea 可看作者上一篇文章 若依 ruoyi-vue SpringBoot聊天敏感词过滤sensitive-word&#xff08;一&#xff09; 效果图 审核时&#xff0c;输入框高亮敏感词&#xff…...

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 基本架构 当用户提问 “美国总统是谁&#xff1f;” 时&#xff0c;系统并不是将问题直接交给大模型来回答&#xff0c;而是先将用户问题在知识库中进行向量搜索&#xff0c;通过语义相似度匹配的方式查询到相关的内容&#xff08;拜登是美国现任第46届总统…&#xff0…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...