快樂python 零基礎也能P圖 —— PIL庫

来源:https://www.cnblogs.com/bpf-1024/archive/2019/04/07/10663852.html
-Advertisement-
Play Games

Python PIL PIL (Python Image Library) 庫是Python 語言的一個第三方庫,PIL庫支持圖像存儲、顯示和處理,能夠處理幾乎所有格式的圖片。 一、PIL庫簡介 1. PIL庫主要有2個方面的功能: (1) 圖像歸檔:對圖像進行批處理、生產圖像預覽、圖像格式轉換等。 ...


Python PIL 

        PIL (Python Image Library) 庫是Python 語言的一個第三方庫,PIL庫支持圖像存儲、顯示和處理,能夠處理幾乎所有格式的圖片。

一、PIL庫簡介

1. PIL庫主要有2個方面的功能:

(1) 圖像歸檔:對圖像進行批處理、生產圖像預覽、圖像格式轉換等。

(2) 圖像處理:圖像基本處理、像素處理、顏色處理等。

2. PIL擁有多個類,此處就其中的Image類、ImageFilter類、ImageEnhance類做簡單介紹。

 

二、安裝庫函數

pip install pillow

註:由於本機已經安裝了PIL庫(安裝時使用pillow),所以以更新為例,使用 -U 標簽可實現更新。

 

三、使用庫函數Image類 —— 基本圖像處理

1. 調用Image

from PIL import Image

 

2. Image類關於圖像讀取與創建

方法

說明

Image.open(filename)

載入圖像文件

Image.new(mode,size,color)

根據給定參數創建新圖像

Image.open(StringIO.StringIO(buffer))

從字元串中獲取圖像

Image.frombytes(mode,size,color)

根據像素點創建新圖像

Image.verify()

對圖像完整性進行檢查,返回異常

 

3. Image類的常用屬性

方法

說明

Image.format

圖像格式或來源,若圖像不是從文件讀取,返回None

Image.mode

圖像的色彩模式,’L’為灰度模式,’RGB’為真彩色圖像,’C()M(品紅)Y()K()’為出版圖像

Image.size

圖像的寬度和高度,單位是像素(px),返回值為元組類型

Image.palette

調色板屬性,返回ImagePalette類型

 

4.Image類的序列圖像操作方法

方法

說明

Image.seek(frame)

跳轉並返回圖像中的指定幀

Image.tell()

返回當前幀的序號

 

5.Image類的圖像旋轉和縮放方法

方法

說明

Image.resize(size)

返回按size大小調整圖像的副本

Image.rotate(angle)

返回按angle角度旋轉圖像的副本

 

6.Image類的圖像轉換和保存方法

方法

說明

Image.save(filename,format)

將圖像保存為filename文件名,format格式

Image.convert(mode)

將圖像轉換為mode模式

Image.thumbnail(size)

創建圖像的縮略圖,size是縮略圖尺寸的元組

 Example_1:

# -*- encoding:utf-8 -*-
''' 改變顏色 --- 顏色反轉'''
from PIL import Image
nest = Image.open("D:\\nest.jpg")
r,g,b = nest.split()           #獲取原圖的RGB通道的顏色值
newb = b.point(lambda i:i*1.1) #將B通道的顏色值增強
nest1 = Image.merge(nest.mode,(b,g,r))
nest1.thumbnail((400,254))     #創建縮略圖
nest1.save("D:\\nest_2.jpg")

 原圖與效果圖對比:

 

7.Image類的圖像像素和通道處理方法

方法

說明

Image.point(func)

根據函數func的功能對每個元素進行運算,返回圖像副本

Image.split()

根據GRB圖像的每個顏色通道,返回圖像副本

Image.merge(mode,bands)

合成通道,其中mode為色彩,bands為新的色彩通道

Image.blend(im1,im2,alpha)

2張圖片im1im2按照公式插值後生成新圖像

公式:im1*(1.0 - alpha) + im2*alpha

 

 四、使用庫函數ImageFilter類 —— 圖像過濾

1.調用ImageFilter

from PIL import ImageFilter

 

2. ImageFilter類預定義圖像過濾方法

方法

說明

ImageFilter.BLUR

圖像的模糊效果

ImageFilter.CONTOUR

圖像的輪廓效果

ImageFilter.DETAIL

圖像的細節效果

ImageFilter.EDGE_ENHANCE

圖像的邊界加強效果

ImageFilter.EDGE_ENHANCE_MORE

圖像的閾值邊界加強效果

ImageFilter.EMBOSS

圖像的浮雕效果

ImageFilter.FIND_EDGES

圖像的邊界效果

ImageFilter.SMOOTH

圖像的平滑效果

ImageFilter.SMOOTH_MORE

圖像的閾值平滑效果

ImageFilter.SHARPEN

圖像的銳化效果

 Example_2:

# -*- encoding:utf-8 -*-
''' 輪廓效果 --- 素描 '''
from PIL import Image
from PIL import ImageFilter
square = Image.open("D:\\square.jpg")
square1 = square.filter(ImageFilter.CONTOUR)  #選擇輪廓效果
square1.save("D:\\square0.jpg")

原圖:

 效果圖:

 

 五、使用庫函數ImageEnhance類 —— 圖像增強

 1. 調用ImageEnhance

from PIL import ImageEnhance

2.ImageEnhance類圖像增強與濾鏡方法

方法

說明

ImageEnhance.enhance(factor)

對所選屬性的數值增強factor

ImageEnhance.Color(im)

調整圖像的顏色平衡

ImageEnhance.Contrast(im)

調整圖像的對比度

ImageEnhance.Brightness(im)

調整圖像的亮度

ImageEnhance.Sharpness(im)

調整圖像的銳度

 Example_3:

# -*- encoding:utf-8 -*-
''' 亮度增強 --- 曝光 '''
from PIL import Image
from PIL import ImageEnhance
gz = Image.open("D:\\gz.jpg")
gz1 = ImageEnhance.Brightness(gz)     #選擇亮度
gz1.enhance(2).save("D:\\gz1.jpg")    #將亮度增強2倍後保存

原圖對比效果圖:

 

 Example_4:

 

# -*- encoding:utf-8 -*-
''' 製作GIF圖 '''
import imageio
savename = "D:\\my.gif"
#準備製作的圖像名稱
filenames = ["D:\\3.jpg","D:\\2.jpg","D:\\1.jpg","D:\\01.jpg","D:\\02.jpg","D:\\03.jpg","D:\\04.jpg"]
frames = []
for name in filenames:
    frames.append(imageio.imread(name))
imageio.mimsave(savename,frames,'GIF',duration=1)

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • vue+element ui中的圖片獲取與上傳 工作上接觸了一下圖片的處理,圖片的格式是文件流, 記錄如下。 請求圖片 請求圖片的時候,帶上 , 否則圖片顯示的可能是亂碼。 顯示圖片 圖片返回的是文件流的形式, 控制臺中顯示的是亂碼。 直接顯示二進位圖片會出錯,所以我們要進行處理。 顯示圖片中,要對 ...
  • 1.CSS認識 在談論CSS的概念之前,我們先說一說web標準的目的——其在於創建一個統一的用於web表現層的技術標準,以便通過不同瀏覽器或終端設備向最終用戶展示信息內容。一個網頁的呈現是由三部分組成:結構(Structure)、表現(Presentation)和行為(Behavior)。 而三大部 ...
  • 1、首先得有node和npm的環境,node的下載:http://nodejs.org/download/。安裝node之後,npm也自動生成了,顯示版本號就意味著安裝成功 2、接下來就是安裝vue-cli腳手架,執行以下命令: 在瀏覽器執行 http://localhost:8080,出現以下截圖 ...
  • 一、2D轉換(transform) CSS3中的transform轉換和PS中的變換是一樣的,分別有:縮放、位移、斜切、旋轉 1.1 transform:scale()縮放 transform:scale(w,h); 寬度和高度,w,h都是填寫縮放的倍數,沒有單位,比如1.5就是放大1.5倍,1是默 ...
  • 今天和大家分享下better-scroll這款移動端用來解決各種滾動需求的插件(目前已經支持PC) 關於其中的API大家可以去官網看下 這裡就給大家介紹幾種常用的以及需要註意的點是什麼 首先說一下better-scroll的使用註意問題吧 1、移動端 我們通常採用三段式進行佈局的 例如 <div c ...
  • 定義: 將一個類的介面轉換成客戶期望的另外一個介面(重點理解適配的這兩個字),使得介面不相容的類可以一起工作適用場景: 詳解 首先來從生活中的常見場景來看,一個電源插座輸出都是220V,而我們一些電子設備,比如手機,MP3,MP4,所需要的電壓不一樣,也不可能直接就是220接上,這就需要一個中間的轉 ...
  • 嚴重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframewor ...
  • 強制類型的轉換 規則: 1、執行算術運算時,低類型(短位元組)可以轉換為高類型(長位元組);例如: int型轉換成double型,char型轉換成int型等等。 就是用強制類型來實現。 3、強制類型轉換語法 :當大容量的變數向小的變數的類型去轉換時需要強制轉換 。 (目標類型) 值; 當我的int類型轉 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...