当前位置: 首页 > 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.mrgr.cn/news/28515.html

相关文章:

  • aws ses 设置发件人昵称
  • 实习冲刺练习 第二十二天
  • [pyspark] pyspark中如何修改列名字
  • 研究生如何远控实验室电脑?远程办公功能使用教程
  • 使用python-Spark使用的场景案例具体代码分析
  • LeetCode【0038】外观数列
  • PHP 中传值与传引用的区别
  • Vite打包zip并改名为md5sum哈希案例
  • 用Docker 安装Nacos
  • 30款免费好用的工具,打工人必备!
  • MySQL_数据类型简介
  • 杂谈之20xx还能XXXX吗?
  • Protobuf.js 深入全面讲解教程
  • Docker部署ddns-go教程(包含完整的配置过程)
  • 深度学习自编码器 - 随机编码器和解码器篇
  • 上海餐饮数据分析与可视化
  • FastGPT一站式解决方案[2-应用篇]:轻松实现RAG-智能问答系统,AI工作流、核心模块讲解
  • Java 每日一刊(第9期):数组
  • 淘客返利系统的异步任务处理与调度
  • 【C++】基础知识 笔记
  • WPF入门教学四 WPF控件概述
  • C语言-结构体-详解
  • Linux操作系统文件权限管理
  • 【C++前后缀分解 动态规划】2100. 适合野炊的日子|1702
  • protobuf.js源码简介
  • NISP 一级 | 6.1 移动智能终端