Pillow 安裝使用教程

一、Pillow 簡介

Pillow 是 Python 圖像處理庫 PIL(Python Imaging Library)的友好分支,是圖像處理的事實標準。它支持打開、編輯、轉換、保存多種圖像格式,常用于圖像批量處理、驗證碼識別、縮略圖生成等應用場景。


二、安裝 Pillow

2.1 使用 pip 安裝(推薦)

pip install Pillow

2.2 驗證安裝

import PIL
print(PIL.__version__)

若無報錯且輸出版本號,則說明安裝成功。


三、基本使用示例

3.1 打開圖像

from PIL import Imageimg = Image.open("example.jpg")
img.show()

3.2 圖像信息

print(img.format)      # 圖像格式(JPEG、PNG 等)
print(img.size)        # 圖像尺寸
print(img.mode)        # 顏色模式(RGB、L 等)

3.3 圖像保存

img.save("output.png")

四、常見圖像操作

4.1 縮放與裁剪

resized = img.resize((200, 200))
cropped = img.crop((100, 100, 300, 300))  # 左、上、右、下

4.2 旋轉與翻轉

rotated = img.rotate(45)           # 順時針旋轉 45°
flipped = img.transpose(Image.FLIP_LEFT_RIGHT)  # 左右翻轉

4.3 轉換顏色模式

gray = img.convert("L")    # 轉為灰度圖
rgba = img.convert("RGBA") # 轉為帶透明通道的圖像

五、繪圖與文字處理

from PIL import ImageDraw, ImageFontdraw = ImageDraw.Draw(img)
draw.rectangle((50, 50, 150, 150), outline="red")
draw.text((60, 60), "Hello", fill="blue")

使用自定義字體:

font = ImageFont.truetype("arial.ttf", 24)
draw.text((10, 10), "你好", font=font, fill="black")

六、圖像濾鏡與增強

from PIL import ImageFilterblurred = img.filter(ImageFilter.BLUR)
contour = img.filter(ImageFilter.CONTOUR)

七、批量圖像處理

import osfor filename in os.listdir("images"):if filename.endswith(".jpg"):img = Image.open(f"images/{filename}")img.thumbnail((300, 300))img.save(f"thumbnails/{filename}")

八、常見問題

Q1: 報錯 OSError: cannot open resource

字體文件路徑不正確,使用絕對路徑或將字體文件放入項目目錄中。

Q2: 中文無法顯示?

需要使用支持中文的字體,如 simhei.ttfmsyh.ttf,并加載為 ImageFont.truetype()


九、學習資源推薦

  • Pillow 官方文檔
  • 菜鳥教程 Pillow 教程
  • Pillow 示例合集 GitHub

本文由“小奇Java面試”原創發布,轉載請注明出處。

可以搜索【小奇JAVA面試】第一時間閱讀,回復【資料】獲取福利,回復【項目】獲取項目源碼,回復【簡歷模板】獲取簡歷模板,回復【學習路線圖】獲取學習路線圖。

在這里插入圖片描述

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

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

相關文章

SQL Server從入門到項目實踐(超值版)讀書筆記 20

9.4 數據的嵌套查詢所謂嵌套查詢,就是在一個查詢語句中,嵌套進另一個查詢語句,即,查詢語句中可以使用另一個查詢語句中得到的查詢結果,子查詢可以基于一張表或者多張表。子查詢中常用的操作符有ANY、SOME、ALL、IN、EX…

【MySQL\Oracle\PostgreSQL】遷移到openGauss數據出現的問題解決方案

【MySQL\Oracle\PostgreSQL】遷移到openGauss數據出現的問題解決方案 問題1:序列值不自動刷新問題 下面SQL只針對單庫操作以及每個序列只綁定一張表的情況 -- 自動生成的序列,設置序列值 with sequences as (select *from (select table_schema,table_…

【Maven】Maven命令大全手冊:28個核心指令使用場景

Maven命令大全手冊:28個核心指令使用場景 Maven命令大全手冊:28個核心指令深度解析一、構建生命周期核心命令1. mvn clean2. mvn compile3. mvn test4. mvn package5. mvn install6. mvn deploy二、依賴管理命令7. mvn dependency:tree8. mvn dependency…

大語言模型(LLM)按架構分類

大語言模型(LLM)按架構分類的深度解析 1. 僅編碼器架構(Encoder-Only) 原理 雙向注意力機制:通過Transformer編碼器同時捕捉上下文所有位置的依賴關系# 偽代碼示例:BERT的MLM任務 masked_input "Th…

MySQL(120)如何進行數據脫敏?

數據脫敏(Data Masking)是指通過某種方式對敏感數據進行變形,使其在使用過程中無法識別原始數據,從而保護數據隱私。數據脫敏通常應用在開發、測試和數據分析等場景中。下面我們詳細介紹如何在Java應用程序中進行數據脫敏&#xf…

使用 Dockerfile 構建基于 .NET9 的跨平臺基礎鏡像

官方基礎鏡像準備 微軟官方 dotnet sdk 基礎鏡像: docker pull mcr.microsoft.com/dotnet/sdk:9.0拉取 ubuntu 鏡像: docker pull ubuntu:24.04更多資源請參考: dotnet sdk images,https://mcr.microsoft.com/en-us/artifact/mar/…

C++ : 線程庫

C : 線程庫一、線程thread1.1 thread類1.1.1 thread對象構造函數1.1.2 thread類的成員函數1.1.3 線程函數的參數問題1.2 this_thread 命名空間域1.2.1 chrono二、mutex互斥量庫2.1 mutex的四種類型2.1.1 mutex 互斥鎖2.2.2 timed_mutex 時間鎖2.2.3 recursive_muetx 遞歸鎖2.2.…

idea的使用小技巧,個人向

idea的使用小技巧,個人向 一、前言二、過程1、顯示內存的使用情況2、去掉xml文件中的黃色背景3、顯示所有打開文件4、顯示工具欄到菜單下面5、使用JDK8 一、前言 每次重裝idea都需要重新設置一下,這里做個記錄。 這些技巧只是個人感覺的好用 演示用的…

debian及衍生發行版apt包管理常見操作

好的,這是 Debian 及其衍生版(如 Ubuntu)使用的 apt 包管理器的常用命令速查表。 一點說明:apt 是新一代的命令行工具,整合了 apt-get 和 apt-cache 的常用功能,并提供了更友好的交互體驗。本表主要使用現…

vue調用函數

好的,我們來講解如何在 Vue 模板中調用函數。您提供的代碼是一個非常棒的、很實用的例子。 在 Vue 模板中,你可以在兩個主要地方調用函數: 文本插值中:像 {{ formatDate(date) }} 這樣,函數的返回值會作為文本被渲染到…

前端常用構建工具介紹及對比

打包構建工具是現代軟件開發中必不可少的,它們幫助開發者自動化構建、打包、部署等流程,提升開發效率。不過,不同時期構建工具略有差異。 每個構建工具都有其擅長的領域,我們需要知道其優勢,才能在我們實際開發中選擇合適的構建工具進行構建處理。 1. Gulp Gulp 是一個…

Web后端開發-SpringBootWeb入門、Http協議、Tomcat

文章目錄Web后端開發簡介SpringBootWeb入門HTTP協議HTTP-概述HTTP-請求協議HTTP-響應協議HTTP-協議解析Web服務器-Tomcat簡介基本使用SpringBootWeb入門程序解析Web后端開發簡介 SpringBootWeb入門 package com.wuxuan.javaweb_wushuang.controller;import org.springframework…

物聯網通信技術全景剖析:從LoRa到5G的深度對比與選型指南

物聯網通信技術全景剖析:從LoRa到5G的深度對比與選型指南在萬物互聯時代,選擇合適的通信技術如同為設備構建“神經網絡”。本文將深入解析七大主流物聯網通信技術,助您在技術選型中精準決策。一、低功耗廣域網(LPWAN)技…

俄羅斯方塊AI深度解析:從算法原理到實現細節

俄羅斯方塊AI深度解析:從算法原理到實現細節 前言 俄羅斯方塊,這個誕生于1984年的經典游戲,至今仍然是人工智能研究領域的熱門課題。當簡單的幾何形狀在網格中不斷下落時,看似簡單的規則背后卻隱藏著復雜的策略決策問題。本文將深入剖析一個基于Python實現的俄羅斯方塊AI…

Spring Boot 框架創建一個簡單的后端接口,并介紹如何使用 Apifox 連接該接口

目錄 一、配置 二、使用 IntelliJ IDEA 創建 Spring Boot 項目 1.打開 IntelliJ IDEA,選擇 File > New > Project 2.在左側面板選擇 Spring Initializr,項目名稱設置為HelloWorldAPI 3.點擊 Create 完成項目創建 三、創建控制器類 四、運行項…

CICD[導航]、docker+gitlab+harbor+jenkins從安裝到部署

一、安裝 CICD[軟件安裝]:docker安裝gitlab-CSDN博客 CICD[軟件安裝]:ubuntu安裝jenkins-CSDN博客 CICD[軟件安裝]:ubuntu安裝私有鏡像倉庫-Harbor-CSDN博客 CICD[軟件安裝]:ubuntu24安裝Docker-CSDN博客 二、鏡像執行 CICD[…

深度學習圖像分類數據集—蘑菇識別分類

該數據集為圖像分類數據集,適用于ResNet、VGG等卷積神經網絡,SENet、CBAM等注意力機制相關算法,Vision Transformer等Transformer相關算法。 數據集信息介紹:蘑菇識別分類:[Agaricus, Amanita, Boletus, Cortinarius, …

iOS 多線程導致接口亂序?抓包還原 + 請求調度優化實戰

在一次性能優化過程中,我們將 iOS App 內多處請求改為并行處理,以提高頁面加載速度。但上線后卻收到部分用戶反饋:進入頁面后數據加載錯亂,有時展示前一次頁面內容,有時同一個接口請求重復返回不同內容。 日志僅顯示正…

PDFBox 在 Linux 報 “No glyph for U+535A (博)” —— 一次子集化踩坑與完整排查清單

PDFBox 在 Linux 報 “No glyph for U535A (博)” —— 一次子集化踩坑與完整排查清單關鍵詞:PDFBox、PDType0Font、子集嵌入(subset embedding)、SimHei、思源黑體、字體回退1. 背景業務場景 后端使用 Apache PDFBox 填充含 AcroForm 的中文…

網安系列【8】之暴力破解入門

文章目錄 引用資料一 什么是暴力破解?二 暴力破解的工作原理三 暴力破解的類型3.1 傳統暴力破解3.2 字典攻擊3.3 混合攻擊3.4 彩虹表攻擊 四 暴力破解實戰演示4.1 環境和工具4.2 破解操作 五 防御暴力破解的策略六 暴力破解的相關法律七 延伸學習總結 引用資料 Bur…