最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python之pil的使用詳解

 更新時(shí)間:2021年10月16日 10:43:18   作者:eyes++  
Pillow是PIL的一個(gè)派生分支,但如今已經(jīng)發(fā)展成為比PIL本身更具活力的圖像處理庫(kù)。我們需要安裝的就是Pillow。這篇文章主要介紹了python之pil的使用,需要的朋友可以參考下

一:PIL功能介紹與安裝

PIL,全稱(chēng)Python Image Library,主要作用是圖像處理,可用于圖片剪切、粘貼、縮放、鏡像、水印、顏色塊、濾鏡、圖像格式轉(zhuǎn)換、色場(chǎng)空間轉(zhuǎn)換、驗(yàn)證碼、旋轉(zhuǎn)圖像、圖像增強(qiáng)、直方圖處理、插值和濾波等功能。不過(guò)只支持到Python 2.7。Pillow是PIL的一個(gè)派生分支,但如今已經(jīng)發(fā)展成為比PIL本身更具活力的圖像處理庫(kù)。我們需要安裝的就是Pillow。

PIL具體用途:

  • 圖像歸檔(Image Archives)。PIL非常適合于圖像歸檔以及圖像的批處理任務(wù)。你可以使用PIL創(chuàng)建縮略圖,轉(zhuǎn)換圖像格式,打印圖像等等。
  • 圖像展示(Image Display)。PIL較新的版本支持包括Tk PhotoImage,BitmapImage還有Windows DIB等接口。PIL支持眾多的GUI框架接口,可以用于圖像展示。
  • 圖像處理(Image Processing)。PIL包括了基礎(chǔ)的圖像處理函數(shù),包括對(duì)點(diǎn)的處理,使用眾多的卷積核(convolution kernels)做過(guò)濾(filter),還有顏色空間的轉(zhuǎn)換。PIL庫(kù)同樣支持圖像的大小轉(zhuǎn)換,圖像旋轉(zhuǎn),以及任意的仿射變換。PIL還有一些直方圖的方法,允許你展示圖像的一些統(tǒng)計(jì)特性。這個(gè)可以用來(lái)實(shí)現(xiàn)圖像的自動(dòng)對(duì)比度增強(qiáng),還有全局的統(tǒng)計(jì)分析等。

pip install Pillow

貌似Pillow是默認(rèn)安裝好了的,可以通過(guò)pip list查看是否已經(jīng)安裝

二:PIL的基本操作

以下是打開(kāi)圖片保存圖片的基本操作。

from PIL import Image

# 1.打開(kāi)圖片
img = Image.open("image/10.jpg")
# 2.顯示圖片(執(zhí)行顯示圖片后線程會(huì)中斷,關(guān)閉圖像后恢復(fù))
img.show()
# 3.保存圖片
img.save("image/xiaomai.jpg")

在這里插入圖片描述

我在嘗試的過(guò)程中發(fā)現(xiàn),jpg格式的圖片保存為jpg格式時(shí)會(huì)報(bào)錯(cuò):OSError: cannot write mode RGBA as JPEG,經(jīng)過(guò)查閱資料發(fā)現(xiàn)錯(cuò)誤原因主要是因?yàn)閖pg格式和JPG格式圖片的通道數(shù)不同。

  • jpg是四通道:RGBA意思是紅色,綠色,藍(lán)色,Alpha的色彩空間,Alpha指透明度
  • JPG是三通道:RGB意思是紅色,綠色,藍(lán)色

所以,jpg格式圖片要保存成JPG格式就要丟棄A通道:

from PIL import Image

# 1.打開(kāi)圖片
img = Image.open("image/10.jpg")
# 2.顯示圖片(執(zhí)行顯示圖片后線程會(huì)中斷,關(guān)閉圖像后恢復(fù))
img.show()
# 3.保存圖片
img = img.convert("RGB")
img.save("image/xiaomai.jpg")

在這里插入圖片描述

下面是圖片旋轉(zhuǎn)的代碼:

from PIL import Image

# 1.打開(kāi)圖片
img = Image.open("pli/7.jpg")
# 2.水平翻轉(zhuǎn)
img1 = img.transpose(Image.FLIP_LEFT_RIGHT)
# 3.保存圖片
img1.save("pli/1.jpg")
# 4.垂直翻轉(zhuǎn)
img2 = img.rotate(180)
# 5.保存照片
img2.save("pli/2.jpg")
# 6.水平+垂直翻轉(zhuǎn)
img3 = img.transpose(Image.FLIP_LEFT_RIGHT).rotate(180)
# 7.保存圖片
img3.save("pli/3.jpg")

在這里插入圖片描述

三:給圖片增加文字

要在圖像上繪制文本要用到 PIL 的兩個(gè)模塊:ImageDraw和ImageFont。 ImageDraw 用于創(chuàng)建繪圖對(duì)象,ImageFont用于加載字體。

from PIL import Image, ImageDraw, ImageFont
# 1.打開(kāi)圖片
img = Image.open("image/10.jpg")
# 2.調(diào)用畫(huà)圖模塊
draw = ImageDraw.Draw(img)
# 3.設(shè)置字體
tfont = ImageFont.truetype("萌神手寫(xiě)體.ttf", 24)
# 4.添加文字
"""
    參數(shù)一:文字在圖片的位置:(x, y)
    參數(shù)二:文字內(nèi)容
    參數(shù)三:字體顏色,當(dāng)然顏色也可以用RGB值指定
    參數(shù)四:字體類(lèi)型
"""
draw.text((50, 30), "eyes++", fill="green", font=tfont)
# 5.保存圖片
img.save("image/addWord.jpg")
# 6.顯示圖片
img.show()

在這里插入圖片描述

四:PIL濾鏡功能

from PIL import Image, ImageFilter
img = Image.open("image/10.jpg")
img = img.filter(ImageFilter.CONTOUR)
img.save("image/Filter.jpg")
img.show()

在這里插入圖片描述

濾鏡類(lèi)型如下:

在這里插入圖片描述

五:PIL鏡像功能

from PIL import Image
img = Image.open("image/10.jpg")
img = img.transpose(Image.FLIP_LEFT_RIGHT)
img.save("image/mirror.jpg")

在這里插入代碼片transpose

有這么幾種模式

  • FLIP_LEFT_RIGHT:左右鏡像
  • FLIP_TOP_BOTTOM:上下鏡像
  • ROTATE_90:逆時(shí)針轉(zhuǎn)90度
  • ROTATE_180:逆時(shí)針轉(zhuǎn)180度
  • ROTATE_270:逆時(shí)針轉(zhuǎn)270度
  • TRANSPOSE:像素矩陣轉(zhuǎn)置
  • TRANSVERSE

最后一種模式我也不知道什么意思,也沒(méi)查到,但效果是下面這樣的,盲猜是對(duì)角線對(duì)轉(zhuǎn)。。。。。

在這里插入圖片描述

除了使用transpose制造鏡像,使用rotate也可以的,不過(guò)rotate只能旋轉(zhuǎn):

在這里插入圖片描述

發(fā)現(xiàn)這樣旋轉(zhuǎn)會(huì)有棱角,然后經(jīng)過(guò)某位不愿透露姓名的大佬指點(diǎn),發(fā)現(xiàn)是rotate旋轉(zhuǎn)只是像素旋轉(zhuǎn),畫(huà)布不動(dòng),于是我寫(xiě)下了以下測(cè)試代碼:

from PIL import Image

img = Image.open("image/12.jpg")
img1 = img.transpose(Image.ROTATE_90)
img1.save("image/test.jpg")
img2 = img.rotate(90)
img2.save("image/test2.jpg")

在這里插入圖片描述

可以發(fā)現(xiàn)小埋的rotate旋轉(zhuǎn)不會(huì)自動(dòng)填充空白像素,而血小板的會(huì)自動(dòng)黑色填充。是因?yàn)閖pg格式是非失真性壓縮的,允許使用類(lèi)似于GIF格式的調(diào)色板技術(shù),支持真彩色圖像,并具備阿爾法通道(半透明)等特性。而jpg格式?jīng)]有阿爾法通道,因此jpg格式圖片不能為透明,jpg格式可以。

六:圖片拼接功能

雖說(shuō)是拼接,但更像是將兩幅圖粘貼到一個(gè)新的畫(huà)布上

from PIL import Image, ImageDraw

# 打開(kāi)圖片
img1 = Image.open("image/10.jpg")
img2 = Image.open("image/addWord.jpg")
# 查看圖片尺寸,便于拼接圖片
print(img1.size)
print(img1.size)
# 新建空白圖片,三個(gè)參數(shù)分別是模式(RGB/RGBA)、大小、顏色
newimg = Image.new(mode="RGB", size=(1174, 614), color=(255, 100, 50))
# 拼接圖片,第一個(gè)參數(shù)是圖片,第二個(gè)是起始位置
newimg.paste(img1, (0, 0))
newimg.paste(img2, (587, 0))
newimg.show()

在這里插入圖片描述

七:PIL裁剪功能

圖片裁剪用到的方法是image.crop(),這個(gè)方法能從圖像中提取出某個(gè)矩形大小的圖像。它接收一個(gè)四元素的元組作為參數(shù),各元素為(left, upper, right, lower),坐標(biāo)系統(tǒng)的原點(diǎn)(0, 0)是左上角。

from PIL import Image
img = Image.open("image/10.jpg")
print(img.size)
imgCut = img.crop((100, 200, 500, 600))
imgCut.show()

在這里插入代碼片

在這里插入圖片描述

八:圖片縮放

可能這么看不是二分之一,但這是顯示問(wèn)題,可以看數(shù)據(jù):

from PIL import Image

# :
img = Image.open('image/10.jpg')
# 獲得圖像尺寸:
w, h = img.size
# 縮放到50%:
img.thumbnail((w//2, h//2))
# 把縮放后的圖像用jpeg格式保存:
img.save('image/zoom.jpg')

在這里插入圖片描述

如果有興趣了解更多相關(guān)內(nèi)容,可以來(lái)我的個(gè)人網(wǎng)站看看:eyes++的個(gè)人網(wǎng)站

到此這篇關(guān)于python之pil的使用的文章就介紹到這了,更多相關(guān)python pil 使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python正則表達(dá)式指南 推薦

    Python正則表達(dá)式指南 推薦

    本文介紹了Python對(duì)于正則表達(dá)式的支持,包括正則表達(dá)式基礎(chǔ)以及Python正則表達(dá)式標(biāo)準(zhǔn)庫(kù)的完整介紹及使用示例。本文的內(nèi)容不包括如何編寫(xiě)高效的正則表達(dá)式、如何優(yōu)化正則表達(dá)式,這些主題請(qǐng)查看其他教程。
    2018-10-10
  • Python 中的 XML 轉(zhuǎn)換利器xml2dict詳解

    Python 中的 XML 轉(zhuǎn)換利器xml2dict詳解

    xml2dict是一個(gè)Python庫(kù),可以將XML數(shù)據(jù)轉(zhuǎn)換為字典,也支持反向轉(zhuǎn)換,它簡(jiǎn)化了XML的處理,使之像處理JSON一樣簡(jiǎn)單,適用于Web服務(wù)數(shù)據(jù)交換、配置文件讀取等場(chǎng)景,安裝簡(jiǎn)單,使用方便,還可以通過(guò)自定義轉(zhuǎn)換器處理XML屬性和命名空間
    2024-10-10
  • Python文本統(tǒng)計(jì)功能之西游記用字統(tǒng)計(jì)操作示例

    Python文本統(tǒng)計(jì)功能之西游記用字統(tǒng)計(jì)操作示例

    這篇文章主要介紹了Python文本統(tǒng)計(jì)功能之西游記用字統(tǒng)計(jì)操作,結(jié)合實(shí)例形式分析了Python文本讀取、遍歷、統(tǒng)計(jì)等相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • python matplotlib如何給圖中的點(diǎn)加標(biāo)簽

    python matplotlib如何給圖中的點(diǎn)加標(biāo)簽

    這篇文章主要介紹了python matplotlib給圖中的點(diǎn)加標(biāo)簽,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Python?使用csv庫(kù)處理CSV文件的方法

    Python?使用csv庫(kù)處理CSV文件的方法

    Python中集成了專(zhuān)用于處理csv文件的庫(kù),名為:csv,本文給大家介紹了Python使用csv庫(kù)處理CSV文件的方法及csv庫(kù)中4個(gè)常用的對(duì)象,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • python uv包管理小結(jié)

    python uv包管理小結(jié)

    uv?是一個(gè)高性能的 Python 包管理工具,它不僅能夠高效地處理包管理和依賴(lài)解析,還提供了對(duì) Python 版本管理的支持,本文主要介紹了python uv包管理小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-04-04
  • Python中.py文件和.ipynb文件的區(qū)別詳解

    Python中.py文件和.ipynb文件的區(qū)別詳解

    Python開(kāi)發(fā)者常用的兩種文件格式.py和.ipynb各有特點(diǎn),本教程將通過(guò)對(duì)比分析、代碼示例和場(chǎng)景說(shuō)明,幫助開(kāi)發(fā)者全面理解二者的區(qū)別與聯(lián)系,需要的朋友可以參考下
    2025-04-04
  • OneFlow源碼解析之Eager模式下Tensor存儲(chǔ)管理

    OneFlow源碼解析之Eager模式下Tensor存儲(chǔ)管理

    這篇文章主要為大家介紹了OneFlow源碼解析之Eager模式下Tensor的存儲(chǔ)管理實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Python編程入門(mén)指南之函數(shù)

    Python編程入門(mén)指南之函數(shù)

    這篇文章主要為大家介紹了Python編程之函數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • Python中文件路徑的拼接的幾種方法實(shí)例

    Python中文件路徑的拼接的幾種方法實(shí)例

    在Python開(kāi)發(fā)中,文件路徑的拼接是一個(gè)常見(jiàn)而且重要的任務(wù),正確的路徑拼接可以確保程序在不同平臺(tái)上都能正常運(yùn)行,本文將介紹Python中文件路徑拼接的幾種方式,包括使用os.path.join、os.path.join、pathlib庫(kù)以及os.path.join
    2023-12-12

最新評(píng)論

行唐县| 天等县| 祁连县| 克山县| 花莲县| 兴文县| 历史| 永春县| 临夏县| 连平县| 铁力市| 凤庆县| 迁西县| 东台市| 商丘市| 壶关县| 化德县| 阳信县| 蓝山县| 镇江市| 曲阜市| 元朗区| 汉阴县| 申扎县| 新津县| 泸定县| 民乐县| 汾阳市| 长岭县| 大竹县| 宁陕县| 溆浦县| 随州市| 北流市| 息烽县| 登封市| 尚志市| 宝清县| 阿勒泰市| 中超| 宿迁市|