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 !

文章結束,感謝閱讀。您的點贊,收藏,評論是我繼續更新的動力。大家有推薦的公眾號可以評論區留言,共同學習,一起進步。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/43922.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43922.shtml
英文地址,請注明出處:http://en.pswp.cn/web/43922.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Agents 要點

一、Agents概念 人類是這個星球上最強大的 Agent。Agent是一個能感知并自主地采取行動的實體,這里的自主性極其關鍵,Agent要能夠實現設定的目標,其中包括具備學習和獲取知識的能力以提高自身性能。 關鍵點:感知環境、自主決策、具…

前端項目筆記經驗-001

做項目有一段時間了,利用下班或者零碎時間的功夫,想分享一些個人心得和感受。與君共勉。 前端應該具備的幾個能力: (1)準備假數據(模擬數據)的能力,因為后端有時候接口沒有準備好&…

element plus 實現跨頁面+跨tab欄多選

文章目錄 element plus 層面數據層面 菜鳥好久沒寫博客了,主要是沒遇見什么很難的問題,今天碰見了一個沒有思路的問題,解決后立馬來和大家伙分享了! 菜鳥今天要實現一個需求,就是:實現跨頁面跨 tab欄 多選…

力學篤行(四)Qt 線程與信號槽

線程與信號槽 1. 主窗口(MainWindow)主線程2. 線程2.1 QThread2.2 QtConcurrent::run()2.3 thread 的調用方式 3. 信號槽3.1 connect3.2 元對象系統中注冊自定義數據類型 附錄一 信號槽機制與主線程進行通信示例 1. 主窗口(MainWindow&#x…

MySQL聯合索引最左匹配原則

MySQL中的聯合索引(也叫組合索引)遵循最左匹配原則,即在創建聯合索引時,查詢條件必須從索引的最左邊開始,否則索引不會被使用。在聯合索引的情況下,數據是按照索引第一列排序,第一列數據相同時才會按照第二列排序。 例…

CVE-2024-27292:Docassemble任意文件讀取漏洞復現 [附POC]

文章目錄 CVE-2024-27292:Docassemble任意文件讀取漏洞復現 [附POC]0x01 前言0x02 漏洞描述0x03 影響版本0x04 漏洞環境0x05 漏洞復現1.訪問漏洞環境2.構造POC3.復現 0x06 修復建議 CVE-2024-27292:Docassemble任意文件讀取漏洞復現 [附POC] 0x01 前言 …

冒泡排序與其C語言通用連續類型排序代碼

冒泡排序與其C語言通用連續類型排序代碼 冒泡排序冒泡排序為交換排序的一種:動圖展示:冒泡排序的特性總結:冒泡排序排整型數據參考代碼(VS2022C語言環境): 冒泡排序C語言通用連續類型排序代碼對比較的方式更…

法律行業守護神:知識庫+AI大模型,解鎖企業知識全周期管理

在法律行業中,搭建一個有效的知識庫并進行企業知識全生命周期管理確實是一項不小的挑戰。法律環境的復雜性和不斷變化的法規要求企業必須持續更新和維護其知識庫,以確保所有信息的準確性和實時性。 這種系統化的信息管理不僅有助于提高律師和法律顧問的…

打卡第9天-----字符串

我在自學的時候,看了卡爾的算法公開課了,有些題目我就照葫蘆畫瓢寫了一遍js代碼,差不多都寫出來了,有暴力解法,有卡爾推薦的思路和方法。話不多說,直接上題上代碼吧: 一、翻轉字符串里的單詞 leetcode題目鏈接:151. 反轉字符串中的單詞 題目描述: 給你一個字符串 s…

5個自動化面試題,助你過關斬將!

面試時,自動化是軟件測試高頻面試內容,通過學習和準備面試題,你會對可能遇到的問題有所準備,從而減輕面試時的緊張感,讓你在面試中穩操勝券! 今天,分享一些在面試中可能會遇到的自動化測試面試…

軟件架構之測評方法

軟件架構之測評方法 第 11 章:測試評審方法11.1 測試方法11.1.1 軟件測試階段11.1.2 白盒測試和黑盒測試11.1.3 缺陷的分類和級別11.1.4 調試 11.2 評審方法11.3 驗證與確認11.4 測試自動化11.5 面向對象的測試 第 11 章:測試評審方法 軟件測試與評審是…

大學生暑假“三下鄉”社會實踐工作新聞投稿指南請查收!

近年來,大學生暑期“三下鄉”社會實踐工作方興未艾,越來越多的大學生通過參與“三下鄉”實踐工作,走出校園,深入基層,體驗農村生活,服務農民,促進農村經濟社會發展,實現了理論與實踐…

算能科技,致力于成為全球領先的通用算力供應商

算能致力于成為全球領先的定制算力提供商,專注于RISC-V、TPU處理器等算力產品的研發和推廣應用。公司遵循全面開源開放的生態理念,攜手行業伙伴推動RISC-V高性能通用計算產業落地;打造覆蓋“云、邊、端”的全場景產品矩陣,為數據中…

【eNSP模擬實驗】三層交換機實現VLAN通信

實驗需求 讓PC1和PC2能夠互相通訊&#xff0c;其中PC1在vlan10中&#xff0c;PC2在vlan20中。 實驗操作 首先把PC1和PC2都配置好ip&#xff0c;配置好之后&#xff0c;點擊右下角的應用 然后&#xff0c;在S2交換機&#xff08;S3700&#xff09;上做如下配置 #進入系統 <…

mvvm模式

MVVM&#xff08;Model-View-ViewModel&#xff09;模式是一種軟件設計模式&#xff0c;特別適用于構建用戶界面&#xff08;UI&#xff09;應用程序&#xff0c;尤其是使用WPF&#xff08;Windows Presentation Foundation&#xff09;、Silverlight和其他XAML技術的應用程序。…

【Redis】Redis十大類型

文章目錄 前言一、string字符串類型二、List列表類型三、 Hash表四、 Set集合五、 ZSet有序集合六、 GEO地理空間七、 HyperLogLog基數統計八、Bitmap位圖九、bitfield位域十、 Stream流10.1 隊列指令10.2 消費組指令10.3 ACK機制 前言 redis是k-v鍵值對進行存儲&#xff0c;k…

Mac上pyenv的安裝及使用

Mac上pyenv的安裝及使用 安裝 brew update brew install pyenv 報錯 git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallowgit -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask fetch --unshallow那就執行這2句 還報錯 git -C /…

【最經典的79個】軟件測試面試題(內含答案)提前備戰“金九銀十”

001.軟件的生命周期(prdctrm) 計劃階段(planning)-〉需求分析(requirement)-〉設計階段(design)-〉編碼(coding)->測試(testing)->運行與維護(running maintrnacne) 測試用例 用例編號 測試項目 測試標題 重要級別 預置條件 輸入數據 執行步驟 預期結果 0002.問&…

“論軟件維護方法及其應用”寫作框架,軟考高級論文,系統架構設計師論文

論文真題 軟件維護是指在軟件交付使用后&#xff0c;直至軟件被淘汰的整個時間范圍內&#xff0c;為了改正錯誤或滿足 新的需求而修改軟件的活動。在軟件系統運行過程中&#xff0c;軟件需要維護的原因是多種多樣的&#xff0c; 根據維護的原因不同&#xff0c;可以將軟件維護…

CVE-2024-34351 漏洞復現

CVE-2024-34351&#xff0c;由Next.js異步函數createRedirectRenderResult導致的SSRF。 影響版本&#xff1a;13.4.0< Next.js < 14.1.1 參考文章&#xff1a; Next.js Server-Side Request Forgery in Server Actions CVE-2024-34351 GitHub Advisory Database Gi…