python圖片處理庫(kù)Pillow實(shí)現(xiàn)簡(jiǎn)單PS功能

文 | 豆豆
來(lái)源:Python 技術(shù)「ID: pythonall」
在我們的日常生活和工作中有不少場(chǎng)景需要簡(jiǎn)單處下理圖片,很多人都是依賴(lài) PS、美圖秀秀等各種圖像處理工具,殊不知在你打開(kāi)軟件的一瞬間 Python 就已經(jīng)將圖片處理完了。聽(tīng)起來(lái)是不是很神奇,正所謂是 Python 在手,啥也不愁。
安裝
老規(guī)矩,先通過(guò) pip 安裝到本地機(jī)器。
pip install Pillow
基本操作
打開(kāi)圖像
可以通過(guò) Image 類(lèi)來(lái)操控圖片,比如打開(kāi)一張圖片并獲取其基本信息。
from PIL import Image, ImageFilter, ImageEnhance, ImageDraw, ImageFont
img = Image.open('cat.png')
print(F'圖片大小為 {img.format}, 格式為 {img.size}, 模式為{img.mode}')
# 圖片大小為 JPEG, 格式為 (3458, 3456), 模式為 RGB
轉(zhuǎn)換格式
如果給目標(biāo)圖片轉(zhuǎn)換格式,可以通過(guò) save 函數(shù)來(lái)實(shí)現(xiàn)。
img.save("cat.png ")
之后你就會(huì)在同目錄下得到一張擴(kuò)展名為 png 的圖片了。

展示圖片
直接通過(guò) show 函數(shù)來(lái)顯示圖片。
img.show()
剪裁
使用 crop 函數(shù)傳入一個(gè)四元祖坐標(biāo)來(lái)剪裁圖片。
point = (1500, 800, 3000, 2300) img_crop = img.crop(point) img_crop.show()

合并
通過(guò) paste 函數(shù)傳入合并的圖像和坐標(biāo)來(lái)實(shí)現(xiàn)兩張圖片的合并,那如果要合并多張圖片呢,當(dāng)然是直接調(diào)用多次就好了呀。
img.paste(img_crop, (0, 0), None) img.show(

縮略圖
有時(shí)候圖像過(guò)大,這時(shí)候就顯示出縮略圖的必要了,可以通過(guò) thumbnail 函數(shù)傳入 size 來(lái)實(shí)現(xiàn)圖片的縮小。
thumb_size = (345, 345) img.thumbnail(thumb_size) img.show()

旋轉(zhuǎn)
使用 transpose 函數(shù)傳入旋轉(zhuǎn)角度來(lái)實(shí)現(xiàn)圖片的翻轉(zhuǎn)。
可以傳入的參數(shù)有以下幾種:
Image.ROTATE_90:逆時(shí)針旋轉(zhuǎn) 90°
Image.ROTATE_180:逆時(shí)針旋轉(zhuǎn) 180°
Image.ROTATE_270:逆時(shí)針旋轉(zhuǎn) 270°
Image.FLIP_LEFT_RIGHT:左右翻轉(zhuǎn)
Image.FLIP_TOP_BOTTOM:上下翻轉(zhuǎn)
img_rotate = img.transpose(Image.ROTATE_90) img_rotate.show()

濾鏡
當(dāng)然,我們還可以對(duì)圖片做一些濾鏡處理。
- 高斯模糊處理
img_gaussianblur = img.filter(ImageFilter.GaussianBlur(30)) img_gaussianblur.show()

- 獲取照片輪廓
img_contour = img.filter(ImageFilter.CONTOUR) img_contour.show()

- 亮度增強(qiáng)
如果照片亮度不夠,還可以對(duì)照片進(jìn)行亮度增強(qiáng)。
color = ImageEnhance.Color(img) img_color = color.enhance(1.5) img_color.show()

二次創(chuàng)作
當(dāng)然,如果想對(duì)圖片進(jìn)行二次創(chuàng)作,比如添加一些輔助線,文字之類(lèi)的可以用 ImageDraw 類(lèi)來(lái)完成。
畫(huà)線
draw = ImageDraw.Draw(img) draw.line((0, 0) + img.size, fill=20, width=3) draw.line((0, img.size[1], img.size[0], 0), fill=200, width=3) img.show()

文字
draw = ImageDraw.Draw(img)
font = ImageFont.truetype('AliPuHui-Bold.ttf', 200)
text = 'This is a cat!'
draw.text((450, 450), text, font=font, fill='pink')
img.show()

當(dāng)然,如果有多行文字的話,直接加入換行符 \n 即可。

總結(jié)
今天派森醬帶大家一起通過(guò)使用 Pillow 庫(kù)對(duì)圖片進(jìn)行一些簡(jiǎn)單的操作,事實(shí)上 Pillow 庫(kù)遠(yuǎn)不止此,將這些簡(jiǎn)單的操作進(jìn)行組合甚至可以自創(chuàng)表情包,期待小伙伴們自行發(fā)掘更多更好玩的用法呀~
以上就是python圖片處理庫(kù)Pillow實(shí)現(xiàn)簡(jiǎn)單PS功能的詳細(xì)內(nèi)容,更多關(guān)于Pillow庫(kù)實(shí)現(xiàn)簡(jiǎn)單PS的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python3.8 微信發(fā)送服務(wù)器監(jiān)控報(bào)警消息代碼實(shí)現(xiàn)
這篇文章主要介紹了python3.8 微信發(fā)送服務(wù)器監(jiān)控報(bào)警消息代碼實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
python 爬取百度文庫(kù)并下載(免費(fèi)文章限定)
這篇文章主要介紹了python 爬取百度文庫(kù)并下載的示例,幫助大家更好的理解和學(xué)習(xí)python 爬蟲(chóng)的相關(guān)知識(shí),感興趣的朋友可以了解下2020-12-12
python實(shí)現(xiàn)指定字符串補(bǔ)全空格的方法
這篇文章主要介紹了python實(shí)現(xiàn)指定字符串補(bǔ)全空格的方法,涉及Python中rjust,ljust和center方法的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
Python實(shí)現(xiàn)的對(duì)本地host127.0.0.1主機(jī)進(jìn)行掃描端口功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)的對(duì)本地host127.0.0.1主機(jī)進(jìn)行掃描端口功能,可實(shí)現(xiàn)掃描本機(jī)開(kāi)放端口的功能,涉及Python socket模塊與Thread多線程模塊相關(guān)使用技巧,需要的朋友可以參考下2019-02-02
django與vue的完美結(jié)合_實(shí)現(xiàn)前后端的分離開(kāi)發(fā)之后在整合的方法
今天小編就為大家分享一篇django與vue的完美結(jié)合_實(shí)現(xiàn)前后端的分離開(kāi)發(fā)之后在整合的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
python做http代理請(qǐng)求的項(xiàng)目實(shí)踐
本文主要介紹了使用Python Flask實(shí)現(xiàn)HTTP代理服務(wù)器的解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03
詳細(xì)介紹python類(lèi)及類(lèi)的用法

