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

【Python】高效图像处理库:pyvips


月亮慢慢变圆,日子慢慢变甜。

在这里插入图片描述

在图像处理领域,pyvips 是一个轻量级且高效的库,适合处理大规模图像、实现高性能的操作。相较于其他常见的图像处理库如 PIL 或 OpenCV,pyvips 以其低内存占用和出色的速度脱颖而出。本文将介绍 pyvips 的基本功能及其优势,并提供一些基础示例代码,帮助你在项目中快速上手。

华丽的分割线

⭕️宇宙起点

    • ❓ 为什么选择 pyvips?
    • 📦 安装 pyvips
    • 💯 基本用法示例
      • 1. 加载和保存图像
      • 2. 图像缩放和裁剪
      • 3. 图像滤镜与转换
      • 4. 图像拼接
    • 🥇 Pyvips 的性能优势
    • 📥 下载地址
    • 💬 结语
    • 📒 参考文献


标题1

❓ 为什么选择 pyvips?

pyvips 是基于 libvips 的 Python 绑定库,而 libvips 是一个高效的 C 库,专为处理大尺寸图像设计。与其他图像库相比,pyvips 有一些明显的优势:

  1. 速度快:libvips 是高度优化的,并行处理图像,尤其在处理大图时,它的性能通常比 PIL 和 OpenCV 要好。
  2. 低内存占用:与许多加载整个图像到内存中的库不同,pyvips 通过流式处理图像,内存消耗显著更低。
  3. 多格式支持:pyvips 支持大量的图像格式,如 TIFF、JPEG、PNG、GIF、WebP 等。
  4. 简洁的 API:pyvips 提供了简洁、直观的 API,使得它的使用非常方便。

标题2

📦 安装 pyvips

安装 pyvips 非常简单,你只需要运行以下命令:

pip install pyvips

注意,pyvips 依赖 libvips,因此你可能需要先安装 libvips。对于 Ubuntu,你可以通过以下命令安装:

sudo apt-get install libvips-dev

标题3

💯 基本用法示例

1. 加载和保存图像

首先,看看如何使用 pyvips 加载和保存图像。与其他图像处理库类似,pyvips 可以读取不同格式的图像文件并将它们保存为新的格式。

import pyvips# 加载图像
image = pyvips.Image.new_from_file('input.jpg')# 保存为 PNG 格式
image.write_to_file('output.png')

2. 图像缩放和裁剪

pyvips 支持快速的图像缩放和裁剪操作。以下代码演示了如何缩放图像并进行裁剪。

# 缩放图像(倍率 0.5)
scaled_image = image.resize(0.5)# 裁剪图像,起点(100, 100),裁剪 300x300 区域
cropped_image = scaled_image.crop(100, 100, 300, 300)# 保存裁剪后的图像
cropped_image.write_to_file('cropped_output.jpg')

3. 图像滤镜与转换

你还可以使用 pyvips 对图像应用各种滤镜或进行颜色空间转换。例如,下面的代码将图像转换为灰度图。

# 转换为灰度图
grayscale_image = image.colourspace('b-w')# 保存灰度图像
grayscale_image.write_to_file('grayscale_output.jpg')

4. 图像拼接

pyvips 也可以轻松地将多张图像拼接在一起:

image1 = pyvips.Image.new_from_file('image1.jpg')
image2 = pyvips.Image.new_from_file('image2.jpg')# 水平拼接两张图像
joined_image = image1.join(image2, direction='horizontal')# 保存拼接结果
joined_image.write_to_file('joined_output.jpg')

标题4

🥇 Pyvips 的性能优势

pyvips 的性能优势尤其体现在处理大图或批量处理图像时。它可以在不加载整个图像到内存中的情况下进行操作,适合需要高效批量处理图像的场景。例如,在医疗影像处理、卫星图像分析、大规模 Web 图像处理等场景中,pyvips 是一个非常强大的工具。

以下是一个简单的性能对比实验:处理一张 5000x5000 分辨率的图像,并将其缩放至 50% 的大小。使用 PIL 和 pyvips 分别执行这一任务,结果如下:

图像库处理时间内存使用
PIL1.2 秒600 MB
pyvips0.3 秒50 MB

可以看到,pyvips 在处理大图像时不仅速度更快,且内存使用也大幅减少。


标题5

📥 下载地址


pyvips 最新版 下载地址


标题6

💬 结语

pyvips 是一个高效的图像处理库,尤其适用于大图像和批量处理场景。它的速度和低内存占用使得它成为了替代传统图像处理库的优秀选择。如果你在处理图像时遇到性能瓶颈,建议尝试将 pyvips 引入到你的工作流程中。


标题7

📒 参考文献

  • pyvips GitHub仓库

希望本文能帮助你更好地理解 pyvips 的强大之处,并为你的项目带来性能提升!


TheEnd


在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/442181.html

相关文章:

  • java项目之在线考试与学习交流网页平台源码(springboot)
  • 【Android源码】屏蔽系统通知出现在系统栏中
  • MySQL索引测试
  • 【软件设计】常用设计模式--观察者模式
  • 东北非国企就职体验
  • 经典sql题(二)求连续登录最多天数用户
  • A. Closest Point
  • 沟通更高效:微信群转移至企业微信操作攻略!
  • 计算机毕业设计 基于Python Django的旅游景点数据分析与推荐系统 Python+Django+Vue 前后端分离 附源码 讲解 文档
  • 关于安卓App自动化测试的一些想法
  • Bigemap GIS Office 2024注册机 全能版地图下载软件
  • 秦时明月6.2魔改版+GM工具+虚拟机一键端
  • firewalld实现NAT端口转发
  • 中国电子学会202309青少年软件编程(Python)等级考试试卷(二级)真题
  • 第四天旅游线路预览——从贾登峪到喀纳斯景区入口(贾登峪游客服务中心)
  • 个人常用命令
  • 如何根据协议请求去捕捉在个文件中发出去的
  • Lombok -----此java库 常用的注解及其功能总结
  • 纯前端表格导出Excel
  • sourceTree保姆级教程7:(合并某次提交)
  • JVM面试知识点手册
  • Vue3.0组合式API:使用reactive()、ref()创建响应式代理对象
  • kubernetes调度2
  • Android中如何处理运行时权限?
  • 【PyCharm】PyCharm:让开发者效率倍增的编程利器
  • Spring Boot- 配置中心问题
  • 字符串专题-1
  • Unsupervised Deep Representation Learning for Real-Time Tracking
  • 第二讲 数据结构
  • docker部署excalidraw画图工具