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

您的位置:首頁技術文章
文章詳情頁

Python Pillow(PIL)庫的用法詳解

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

Pillow庫是一個Python的第三方庫。

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

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

一、安裝Pillow

pip install pillow

Pillow庫安裝成功后,導包時要用PIL來導入,而不能用pillow或Pillow。

import PILfrom PIL import Image

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

二、打開本地圖片

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

運行結果:

Python Pillow(PIL)庫的用法詳解

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

show(): 調用圖片顯示軟件打開圖片。打開后程序會阻塞,需要手動關閉。

三、創建一張新圖片

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

運行結果:

Python Pillow(PIL)庫的用法詳解

new(mode, size, color=0): 創建一張圖片(畫布),用于繪圖,有3個參數。

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

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

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

四、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)

運行結果:

width:  1557

height:  911

size:  (1557, 911)

mode:  RGBA

format:  jpg

category:  0

readonly:  1

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

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

format屬性表示圖片的格式,格式一般與圖片的后綴擴展名相關。category屬性表示圖片的的類別。

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

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

五、圖片的模式和模式轉換

1. 圖片的模式

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

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

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

2. 圖片的模式轉換

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()

運行結果:

RGBA

1

L

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

convert()方法有5個參數,都有默認值,根據轉換的模式來傳值:

mode,圖片的模式,傳入需要轉換的模式。部分模式之間不支持轉換,代碼會報錯。

matrix, 轉換矩陣。傳入該參數時,應該傳入由浮點數構成的元組,元組長度為4或12。matrix只支持從少數模式轉換成’L’或’RGB’。

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

palette, 調色板,用于控制調色板的產生。從模式’RGB’轉換為’P’時使用,可用的方法有’WEB’(默認)或’ADAPTIVE’。’ADAPTIVE’表示使用自適應的調色板。

colors, 自適應調色板使用的顏色數。當palette參數為’ADAPTIVE’時,用于控制調色板的顏色數目。默認是最大值,即256種顏色。

2.1 matrix參數的效果對比

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()

運行結果:

Python Pillow(PIL)庫的用法詳解

上面的代碼中,給matrix參數傳入了一個長度為12的元組,matrix的值改變了轉換的效果,變化程度取決于傳入的元組中浮點數的值。注意,有些模式是不支持的,如’RGBA’,且傳入的元組長度必須為4或12,否則報錯。

2.2 palette參數的效果對比

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()

運行結果:

Python Pillow(PIL)庫的用法詳解

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

六、圖片拷貝粘貼和保存

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()

運行結果:

jpg RGBA

Python Pillow(PIL)庫的用法詳解

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

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

im, 被粘貼的圖片。傳入一張圖片,當第二個參數box指定的是一個區域時,im參數也可以是一個整數或顏色值(元組表示,16進制表示和顏色名都可以,如上面代碼中的image_new可以換成(0, 0, 255), ’#0000FF’, ’blue’)。

box, 圖片粘貼的位置或區域。傳入一個長度為2或4的元組,如果不傳值,默認為(0, 0),圖片被粘貼在當前圖片的左上角。如果傳入長度為2的元組(x, y),表示被粘貼圖片的左上角坐標位置。如果傳入長度為4的元組(x1, y1, x2, y2),表示圖片粘貼的區域,此時區域的大小必須與被粘貼圖片一致,否則會報錯,傳入的元組長度為其他值也會報錯。

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

save(fp, format=None, **params): 將當前圖片按指定的文件名保存,運行后會將圖片按新名字保存在當前路徑下(也可以指定路徑)。文件名最好帶擴展名,方便打開,format表示圖片的格式,沒有指定format則會根據擴展名來解析(如果能解析出來),一般不需要指定format,傳入一個規范的文件名即可。

七、圖片的裁剪和縮放

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()

運行結果:

before resize:  (1557, 911)

Python Pillow(PIL)庫的用法詳解

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

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

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

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

box, 縮放圖片的區域。傳入長度為4的元組(x1, y1, x2, y2),這個區域必須在原圖的(0, 0, width, height)范圍內,如果超出范圍會報錯,如果不傳值則默認將整張原圖進行縮放。

reducing_gap, 減少間隙。傳入一個浮點數,用于優化圖片縮放效果,默認不進行優化,值大于3.0時優化效果基本已經是公平的重采樣。

到此這篇關于Python Pillow(PIL)庫的用法介紹的文章就介紹到這了,更多相關Python Pillow(PIL)庫內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
中文一区一区三区高中清不卡免费| 日产欧产美韩系列久久99| 国产视频网站一区二区三区| 深夜福利一区| 国产日韩中文在线中文字幕| 国产精品一区二区av交换| 日本不卡中文字幕| 国产精品欧美三级在线观看 | 美国三级日本三级久久99| 男人的天堂久久精品| 一区二区91| 日韩福利视频导航| 你懂的亚洲视频| sm捆绑调教国产免费网站在线观看| 黄色在线观看www| 日韩精品麻豆| 蜜桃视频一区二区| 日韩av网站在线免费观看| 国产精品久久777777毛茸茸| 精品三级av在线导航| 天堂日韩电影| 丝袜亚洲另类欧美| 国产日产精品_国产精品毛片 | 成人黄色av| 99视频精品全国免费| 免费精品视频| 欧美日韩精品一区二区三区视频 | 日韩福利视频导航| 免费亚洲一区| 日韩大片在线播放| 午夜久久久久| 日韩av网站在线免费观看| 精品网站aaa| 一区在线免费| 欧美交a欧美精品喷水| 亚洲a在线视频| 日本aⅴ精品一区二区三区| 成人亚洲一区| 日韩影院在线观看| 国产精品一区高清| 久久一区二区三区喷水| 日韩高清不卡一区二区| 欧美成人基地| 日本三级亚洲精品| 99视频精品全部免费在线视频| 日韩激情一区二区| 久久国产免费| 国产欧美精品| 亚洲一区二区毛片| 国产在线一区不卡| 蜜桃传媒麻豆第一区在线观看| 精品成av人一区二区三区 | 蜜桃tv一区二区三区| 日韩欧美美女在线观看| 欧美成人精品三级网站| 日本国产欧美| 色老板在线视频一区二区| 亚洲精品第一| 久久九九国产| 你懂的国产精品| 亚洲一区观看| av在线资源| 91九色综合| 日韩午夜免费| 日产精品一区| 久久精品国内一区二区三区| 亚洲欧洲美洲国产香蕉| 日韩在线免费| 国产视频网站一区二区三区| 亚洲一区成人| 久久伦理在线| 国产精品videosex极品| 蜜臀久久久99精品久久久久久| а√天堂8资源在线| 国产三级精品三级在线观看国产| 国产农村妇女精品一二区| 成人日韩在线| 国产中文字幕一区二区三区| 日韩中文字幕一区二区高清99| 久久久久亚洲| 91亚洲人成网污www| 国产美女视频一区二区| 中文精品电影| 国产一区清纯| 国产一区二区三区成人欧美日韩在线观看 | 亚洲一级网站| 精品视频一区二区三区在线观看| 亚洲区国产区| 久久高清国产| 欧美日韩第一| 精精国产xxxx视频在线野外| 久久91视频| 久久99蜜桃| 国产日韩一区二区三区在线| 综合视频一区| 欧美在线综合| 亚洲欧美日韩国产综合精品二区 | 日韩中文影院| 欧美国产偷国产精品三区| 欧美亚洲三级| 欧美久久香蕉| 欧美日韩a区| 日韩av电影一区| 日韩一区二区三区精品| 亚洲日韩中文字幕一区| 亚洲综合电影一区二区三区| 亚洲精品一二三区区别| 亚洲午夜av| 欧美精选视频一区二区| 中文一区一区三区高中清不卡免费| 久久精品九色| 日产精品一区二区| а√在线中文在线新版| 丁香六月综合| 四虎884aa成人精品最新| 久久精品动漫| 欧美日韩国产传媒| 久久高清免费观看| 蜜臀av性久久久久蜜臀aⅴ流畅 | 日韩精品久久理论片| 一区二区日韩免费看| 日韩精品福利一区二区三区| 人人爱人人干婷婷丁香亚洲| 欧美日韩一区二区三区在线电影| 亚洲精品动态| 国产亚洲人成a在线v网站| 国产精品麻豆成人av电影艾秋| 国产精品调教| 精品国产aⅴ| 麻豆网站免费在线观看| 韩国精品主播一区二区在线观看 | 9久re热视频在线精品| 日韩视频在线一区二区三区 | 日韩av在线中文字幕| 91嫩草亚洲精品| 久久久精品久久久久久96| 亚洲一级二级| 免费成人在线影院| 国产欧美在线观看免费| 成人在线免费观看91| 伊人网在线播放| 日韩高清成人| 国产精品日韩久久久| 四虎精品一区二区免费| 欧美日本二区| 精品免费在线| 激情婷婷综合| 婷婷成人av| 精品三级在线观看视频| 久久精品青草| 男女激情视频一区| 国产视频一区二| 中文字幕高清在线播放| 狠狠色狠狠色综合日日tαg| 亚洲另类av| 国产精品99精品一区二区三区∴| 国产精品毛片久久| 欧美在线网站| 777久久精品| 热三久草你在线| 亚洲自拍另类| 国产精品22p| 久久麻豆精品| 91伊人久久| 久久久久蜜桃| 热久久久久久| 亚洲国产影院| 欧美日韩一区二区三区在线电影| 欧美成人a交片免费看| 免费日韩一区二区| 国产精品激情电影| 久久国产主播| 欧美日韩视频免费看| 99久久久久久中文字幕一区| 日本一区免费网站| 国产一区二区三区日韩精品| 一本色道久久精品| 国产精品99久久免费| 黄色av日韩| 久久中文精品| 欧美专区一区二区三区| 精品一区视频| 久久99伊人| 色综合五月天| 亚洲精品第一| 欧美亚洲国产激情| 91成人小视频| 一本色道精品久久一区二区三区| 久久一区欧美| 亚洲一区av| 日本蜜桃在线观看视频| 日本va欧美va瓶| 欧美成人久久| 麻豆视频久久| 亚洲一级大片| 亚洲大片在线| 狂野欧美性猛交xxxx| 黄色成人精品网站| 9999国产精品| 最新亚洲国产|