日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python Pillow(PIL)庫(kù)的用法詳解

瀏覽:283日期:2022-07-10 16:54:04

Pillow庫(kù)是一個(gè)Python的第三方庫(kù)。

在Python2中,PIL(Python Imaging Library)是一個(gè)非常好用的圖像處理庫(kù),但PIL不支持Python3,所以有人(Alex Clark和Contributors)提供了Pillow,可以在Python3中使用。

官方文檔路徑:https://pillow.readthedocs.io/en/latest/

一、安裝Pillow

pip install pillow

Pillow庫(kù)安裝成功后,導(dǎo)包時(shí)要用PIL來(lái)導(dǎo)入,而不能用pillow或Pillow。

import PILfrom PIL import Image

在Pillow庫(kù)中,有二十多個(gè)模塊,還支持非常多的插件。其中最常用的是Image模塊中同名的Image類(lèi),其他很多模塊都是在Image模塊的基礎(chǔ)上對(duì)圖像做進(jìn)一步的特殊處理。本文主要介紹Image模塊的常用用法,其他的模塊可以按需看文檔。

二、打開(kāi)本地圖片

# coding=utf-8from PIL import Image image = Image.open('yazi.jpg')image.show()

運(yùn)行結(jié)果:

Python Pillow(PIL)庫(kù)的用法詳解

open(fp, mode=’r’): 打開(kāi)一張圖片,如果圖片與當(dāng)前代碼在同一目錄下,可以只寫(xiě)圖片的文件名,其他情況需要拼接圖片的路徑。mode默認(rèn)為’r’,也必須為’r’。

show(): 調(diào)用圖片顯示軟件打開(kāi)圖片。打開(kāi)后程序會(huì)阻塞,需要手動(dòng)關(guān)閉。

三、創(chuàng)建一張新圖片

from PIL import Image image = Image.new(’RGB’, (160, 90), (0, 0, 255))image.show()

運(yùn)行結(jié)果:

Python Pillow(PIL)庫(kù)的用法詳解

new(mode, size, color=0): 創(chuàng)建一張圖片(畫(huà)布),用于繪圖,有3個(gè)參數(shù)。

mode, 圖片的模式,如“RGB”(red,green,blue三原色的縮寫(xiě),表示真彩色圖像)、“L”(灰度,黑白圖像)等。

size, 圖片的大小。是一個(gè)長(zhǎng)度為2的元組(width, height),表示的是像素大小。

color, 圖片的顏色,默認(rèn)值為0表示黑色。可以傳入長(zhǎng)度為3的元組表示顏色,也可以傳入顏色的十六進(jìn)制,在版本1.1.4后,還可以直接傳入顏色的英文單詞,如上面代碼中的(0, 0, 255)可以換成‘#0000FF’或‘blue’,都是表示藍(lán)色。

四、Image模塊的常用屬性

from PIL import Image image = Image.open('yazi.jpg')print(’width: ’, image.width)print(’height: ’, image.height)print(’size: ’, image.size)print(’mode: ’, image.mode)print(’format: ’, image.format)print(’category: ’, image.category)print(’readonly: ’, image.readonly)print(’info: ’, image.info)

運(yùn)行結(jié)果:

width:  1557

height:  911

size:  (1557, 911)

mode:  RGBA

format:  jpg

category:  0

readonly:  1

width屬性表示圖片的像素寬度,height屬性表示圖片的像素高度,width和height組成了size屬性,size是一個(gè)元組。

mode屬性表示圖片的模式,如RGBA,RGB,P,L等。

format屬性表示圖片的格式,格式一般與圖片的后綴擴(kuò)展名相關(guān)。category屬性表示圖片的的類(lèi)別。

readonly屬性表述圖片是否為只讀,值為1或0,表示的是布爾值。

info屬性表示圖片的信息,是一個(gè)字典。

五、圖片的模式和模式轉(zhuǎn)換

1. 圖片的模式

圖片有很多模式,支持以下標(biāo)準(zhǔn)模式,參考:https://pillow.readthedocs.io/en/latest/handbook/concepts.html#concept-modes

mode 描述 1 1位像素,黑白,每字節(jié)存儲(chǔ)一個(gè)像素 L 8位像素,黑白 P  8位像素,使用調(diào)色板映射到任何其他模式 RGB  3x8位像素,真彩色 RGBA  4x8位像素,帶透明蒙版的真彩色 CMYK  4x8位像素,分色 YCbCr  3x8位像素,彩色視頻格式 LAB  3x8位像素,L * a * b顏色空間 HSV  3x8位像素,色相,飽和度,值顏色空間 I  32位有符號(hào)整數(shù)像素 F  32位浮點(diǎn)像素

1位像素的范圍是0-1,0表示黑1表示白,中間表示灰。8位像素的范圍是0-255,如RGB的(0, 0, 0)表示黑,(255, 255, 255)表示白,依此類(lèi)推。

2. 圖片的模式轉(zhuǎn)換

from PIL import Image image = Image.open('yazi.jpg')print(image.mode)image1 = image.convert(’1’)print(image1.mode)# image1.show()image_l = image.convert(’L’)print(image_l.mode)# image_l.show()image_p = image.convert(’P’)print(image_p.mode)image_p.show()

運(yùn)行結(jié)果:

RGBA

1

L

convert(self, mode=None, matrix=None, dither=None, palette=WEB, colors=256): 將當(dāng)前圖片轉(zhuǎn)換為指定的模式,并且返回轉(zhuǎn)換后的圖片。如果不指定模式,則選擇一種能保留圖片所有信息且不使用調(diào)色板的模式(通常的結(jié)果是不轉(zhuǎn)換)。將彩色圖像轉(zhuǎn)換為灰度(’L’)時(shí),使用ITU-R 601-2進(jìn)行亮度轉(zhuǎn)換:L = R * 299/1000 + G * 587/1000 + B * 114/1000 。將灰度(’L’)或真彩(’RGB’)轉(zhuǎn)換為模式’1’時(shí),如果dither參數(shù)為’NONE’,所有大于128的值均設(shè)置為255(白色),所有其他值都設(shè)為0(黑色)。

convert()方法有5個(gè)參數(shù),都有默認(rèn)值,根據(jù)轉(zhuǎn)換的模式來(lái)傳值:

mode,圖片的模式,傳入需要轉(zhuǎn)換的模式。部分模式之間不支持轉(zhuǎn)換,代碼會(huì)報(bào)錯(cuò)。

matrix, 轉(zhuǎn)換矩陣。傳入該參數(shù)時(shí),應(yīng)該傳入由浮點(diǎn)數(shù)構(gòu)成的元組,元組長(zhǎng)度為4或12。matrix只支持從少數(shù)模式轉(zhuǎn)換成’L’或’RGB’。

dither, 高頻振動(dòng),用于控制顏色抖動(dòng)。從模式’RGB’轉(zhuǎn)換為’P’或從’RGB’或’L’轉(zhuǎn)換為’1’時(shí)使用。可用的方法有’NONE’或’FLOYDSTEINBERG’(默認(rèn))。當(dāng)提供了matrix參數(shù)時(shí)不使用此功能。

palette, 調(diào)色板,用于控制調(diào)色板的產(chǎn)生。從模式’RGB’轉(zhuǎn)換為’P’時(shí)使用,可用的方法有’WEB’(默認(rèn))或’ADAPTIVE’。’ADAPTIVE’表示使用自適應(yīng)的調(diào)色板。

colors, 自適應(yīng)調(diào)色板使用的顏色數(shù)。當(dāng)palette參數(shù)為’ADAPTIVE’時(shí),用于控制調(diào)色板的顏色數(shù)目。默認(rèn)是最大值,即256種顏色。

2.1 matrix參數(shù)的效果對(duì)比

from PIL import Imageimage = Image.open('yazi.jpg')image_rgb = image.convert(’RGB’)print(image_rgb.mode)image_l = image_rgb.convert(’L’)image_l.show()matrix = (0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6)image_l2 = image_rgb.convert(’L’, matrix=matrix)image_l2.show()

運(yùn)行結(jié)果:

Python Pillow(PIL)庫(kù)的用法詳解

上面的代碼中,給matrix參數(shù)傳入了一個(gè)長(zhǎng)度為12的元組,matrix的值改變了轉(zhuǎn)換的效果,變化程度取決于傳入的元組中浮點(diǎn)數(shù)的值。注意,有些模式是不支持的,如’RGBA’,且傳入的元組長(zhǎng)度必須為4或12,否則報(bào)錯(cuò)。

2.2 palette參數(shù)的效果對(duì)比

from PIL import Image image = Image.open('yazi.jpg')image_p = image.convert(’P’)# image_l.show()image_p2 = image.convert(’P’, palette=’ADAPTIVE’, colors=256)image_p2.show()

運(yùn)行結(jié)果:

Python Pillow(PIL)庫(kù)的用法詳解

上面的代碼中,將palette參數(shù)改為了’ADAPTIVE’,圖片的差異不大,不過(guò),如果將colors變小差異會(huì)比較大,但那樣會(huì)將圖片效果變差。

六、圖片拷貝粘貼和保存

from PIL import Image image = Image.open('yazi.jpg')image_copy = image.copy()# image_copy.show()image_new = Image.new(’RGB’, (160, 90), (0, 0, 255))image_new2 = Image.new(’L’, (160, 90), ’#646464’)image_copy.paste(image_new, (100, 100, 260, 190), mask=image_new2)image_copy.save(’duck.jpg’)image_save = Image.open(’duck.jpg’)print(image_save.format, image_save.mode)image_copy.show()

運(yùn)行結(jié)果:

jpg RGBA

Python Pillow(PIL)庫(kù)的用法詳解

copy(): 拷貝當(dāng)前的圖片,拷貝出來(lái)的圖片與原圖一模一樣。如果想在圖片上粘貼一些內(nèi)容,又想保留原圖時(shí),可以使用此方法。

paste(im, box=None, mask=None): 將另一張圖片粘貼到當(dāng)前圖片中,如果粘貼的模式不匹配,則將被粘貼圖片的模式轉(zhuǎn)換成當(dāng)前圖片的模式。有3個(gè)參數(shù)。

im, 被粘貼的圖片。傳入一張圖片,當(dāng)?shù)诙€(gè)參數(shù)box指定的是一個(gè)區(qū)域時(shí),im參數(shù)也可以是一個(gè)整數(shù)或顏色值(元組表示,16進(jìn)制表示和顏色名都可以,如上面代碼中的image_new可以換成(0, 0, 255), ’#0000FF’, ’blue’)。

box, 圖片粘貼的位置或區(qū)域。傳入一個(gè)長(zhǎng)度為2或4的元組,如果不傳值,默認(rèn)為(0, 0),圖片被粘貼在當(dāng)前圖片的左上角。如果傳入長(zhǎng)度為2的元組(x, y),表示被粘貼圖片的左上角坐標(biāo)位置。如果傳入長(zhǎng)度為4的元組(x1, y1, x2, y2),表示圖片粘貼的區(qū)域,此時(shí)區(qū)域的大小必須與被粘貼圖片一致,否則會(huì)報(bào)錯(cuò),傳入的元組長(zhǎng)度為其他值也會(huì)報(bào)錯(cuò)。

mask, 蒙版。傳入一張與被粘貼圖片尺寸一樣的圖片,可以使用模式為’1’、’L’或者’RGBA’的圖像。如果mask圖像的顏色值為255,則直接按被粘貼圖片的顏色粘貼,如果mask圖像的顏色值為0,則保留當(dāng)前圖片的顏色(相當(dāng)于沒(méi)有粘貼),如果mask圖像的顏色值為0~255之間的值,則將im與mask進(jìn)行混合后再粘貼。

save(fp, format=None, **params): 將當(dāng)前圖片按指定的文件名保存,運(yùn)行后會(huì)將圖片按新名字保存在當(dāng)前路徑下(也可以指定路徑)。文件名最好帶擴(kuò)展名,方便打開(kāi),format表示圖片的格式,沒(méi)有指定format則會(huì)根據(jù)擴(kuò)展名來(lái)解析(如果能解析出來(lái)),一般不需要指定format,傳入一個(gè)規(guī)范的文件名即可。

七、圖片的裁剪和縮放

from PIL import Image image = Image.open('yazi.jpg')image_crop = image.crop(box=(300, 300, 800, 700))# image_crop.show()print(’before resize: ’, image.size)image_resize = image.resize((500, 400), resample=Image.LANCZOS, box=(100, 100, 1200, 800), reducing_gap=5.0)print(’after resize: ’, image_resize.size)image_resize.show()

運(yùn)行結(jié)果:

before resize:  (1557, 911)

Python Pillow(PIL)庫(kù)的用法詳解

crop(box=None): 裁剪圖片,返回裁剪區(qū)域的圖片。box表示裁剪的區(qū)域,傳入長(zhǎng)度為4的元組(x1, y1, x2, y2),不傳默認(rèn)為拷貝原圖,相當(dāng)于copy()方法,如果裁剪的區(qū)域超過(guò)了原圖的區(qū)域,超出部分用像素格填充。

resize(size, resample=BICUBIC, box=None, reducing_gap=None): 縮放圖片,返回縮放后的圖片。有4個(gè)參數(shù)。

size, 圖片縮放后的尺寸,傳入一個(gè)長(zhǎng)度為2的元組(width, height)。

resample, 重采樣,是一個(gè)可選的重采樣過(guò)濾器。可以傳入Image.NEAREST, Image.BOX, Image.BILINEAR, Image.HAMMING, Image.BICUBIC, Image.LANCZOS。默認(rèn)過(guò)濾器為Image.BICUBIC。如果圖像的模式為’1’或’P’,則始終設(shè)置為Image.NEAREST。

box, 縮放圖片的區(qū)域。傳入長(zhǎng)度為4的元組(x1, y1, x2, y2),這個(gè)區(qū)域必須在原圖的(0, 0, width, height)范圍內(nèi),如果超出范圍會(huì)報(bào)錯(cuò),如果不傳值則默認(rèn)將整張?jiān)瓐D進(jìn)行縮放。

reducing_gap, 減少間隙。傳入一個(gè)浮點(diǎn)數(shù),用于優(yōu)化圖片縮放效果,默認(rèn)不進(jìn)行優(yōu)化,值大于3.0時(shí)優(yōu)化效果基本已經(jīng)是公平的重采樣。

到此這篇關(guān)于Python Pillow(PIL)庫(kù)的用法介紹的文章就介紹到這了,更多相關(guān)Python Pillow(PIL)庫(kù)內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
免费精品国产的网站免费观看| 国产一区福利| 日韩高清欧美| 精品国产99| 久久丁香四色| 老司机免费视频一区二区| 国产日韩一区二区三区在线播放| 欧美在线精品一区| 国产精品调教| www.九色在线| 一区免费在线| 视频精品一区| 国产精品高潮呻吟久久久久| 国产精品成人一区二区不卡| 成人羞羞视频播放网站| 欧美专区18| 日本不卡视频一二三区| 国产高清亚洲| 日韩精品诱惑一区?区三区| 国产第一亚洲| 免费观看久久av| 亚洲欧洲日韩| 精品日本视频| 在线亚洲激情| 国产精品一区二区美女视频免费看 | 蜜桃精品在线| 亚洲经典在线| 欧美一区91| 亚洲va中文在线播放免费| 久久成人国产| 精品久久久久久久| 亚洲欧洲一区| 国产精品蜜月aⅴ在线| se01亚洲视频 | 欧美成人综合| 亚洲尤物av| 国产白浆在线免费观看| 老鸭窝毛片一区二区三区| 国产剧情在线观看一区| 91精品在线观看国产| 亚洲日韩中文字幕一区| 91视频一区| 日韩精品亚洲一区二区三区免费| 美女av在线免费看| 日本亚洲最大的色成网站www| 日韩电影在线视频| 日韩1区2区日韩1区2区| 久久国产欧美| 国产精品成人3p一区二区三区| 午夜久久影院| 国产精品magnet| 野花国产精品入口| 欧美xxxx中国| 国产日韩一区二区三免费高清| 欧美在线亚洲综合一区| 麻豆视频观看网址久久| 综合日韩在线| 在线日韩视频| 成人亚洲一区| 国产探花一区在线观看| 影音国产精品| jizzjizz中国精品麻豆| 91精品尤物| 国产一级久久| 偷拍精品精品一区二区三区| 日韩国产精品久久久| 日韩午夜在线| 久久中文字幕二区| 成人亚洲欧美| 福利在线一区| 欧美激情91| 国产精品最新| 国产日韩视频| 97久久超碰| 亚州欧美在线| 日韩在线卡一卡二| 亚洲一区日韩| 亚洲免费激情| 宅男在线一区| 亚洲一级特黄| 超碰99在线| 日本久久黄色| 国产不卡精品| 久久一区视频| 久久精品毛片| 麻豆精品国产91久久久久久| 欧美视频久久| 日本午夜精品| 青草综合视频| 91欧美极品| 欧美日韩伊人| 国产毛片精品| 国产精品丝袜在线播放| 国产欧美亚洲一区| 国产视频一区二区在线播放| 免费在线看一区| 麻豆9191精品国产| 亚洲性视频在线| 日韩二区三区四区| 国产日韩一区| 美女久久久精品| 国产成人精选| 韩国精品主播一区二区在线观看| 色在线中文字幕| 91精品国产调教在线观看| 伊人精品一区| 视频一区欧美日韩| 亚洲tv在线| 国产免费久久| 成人在线视频免费看| 国产一区二区三区免费在线| 97在线精品| 婷婷成人在线| 国产精品毛片在线| 日韩高清电影免费| 另类小说一区二区三区| 青青青免费在线视频| 久久黄色影院| 天堂av在线一区| 亚洲bt欧美bt精品777| 久久国内精品| 亚洲伊人av| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩国产在线观看一区| 久久99精品久久久野外观看| 精品72久久久久中文字幕| 日韩精品欧美| 久久午夜影视| 国产精品高潮呻吟久久久久| 精品国产黄a∨片高清在线| 日韩精品久久久久久久电影99爱 | 国产粉嫩在线观看| 黄页网站一区| 日韩不卡一区二区| 国产成人精品一区二区三区视频| 国产99久久久国产精品成人免费| 日韩精品一级二级| 国产精品99精品一区二区三区∴| av高清不卡| 一区在线免费| 国产精品一国产精品| 久久伦理在线| 日韩av一级片| 午夜精品久久久久久久久久蜜桃| 中文一区一区三区免费在线观| 国产日韩在线观看视频| 激情欧美日韩一区| 国产美女撒尿一区二区| 久久亚洲精品中文字幕蜜潮电影| 亚洲日产国产精品| 成人日韩精品| 国产探花一区在线观看| 久久天堂精品| 免费日韩成人| 亚洲二区精品| 国产精品调教| 亚洲欧美成人综合| 久久电影tv| 18国产精品| 99在线|亚洲一区二区| 精品久久影院| 爽爽淫人综合网网站| 国产自产自拍视频在线观看| 午夜久久av| 亚洲福利精品| 成人在线免费观看网站| 日韩欧美2区| 国产精品免费看| 中文字幕在线免费观看视频| 免播放器亚洲| 国产一区二区三区自拍| 国产精品大片| 亚洲精一区二区三区| 99久久夜色精品国产亚洲1000部| 国产乱码精品一区二区三区四区| 中文一区二区| 日韩成人亚洲| 久久精品国产福利| 91av一区| 日韩中文一区二区| 亚洲一区二区免费看| 欧美aa在线观看| 精品国产91| 国产精品丝袜在线播放| 羞羞答答国产精品www一本| 久久久久免费av| 国产videos久久| 久久影视三级福利片| 国产三级精品三级在线观看国产| 亚洲综合电影一区二区三区| 久久高清免费| 欧美黄色网页| 久久电影tv| 国产一区不卡| 精品视频免费| 精品一区二区三区中文字幕视频| 青草综合视频| 亚欧成人精品| 日本一区二区三区视频在线看| 免费久久久久久久久|