亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

Python圖片處理模塊PIL操作方法(pillow)

瀏覽:4日期:2022-07-30 18:55:06

一、PIL的基本概念:

PIL中所涉及的基本概念有如下幾個:通道(bands)、模式(mode)、尺寸(size)、坐標系統(tǒng)(coordinate system)、調(diào)色板(palette)、信息(info)和濾波器(filters)。

1、通道

每張圖片都是由一個或者多個數(shù)據(jù)通道構(gòu)成。PIL允許在單張圖片中合成相同維數(shù)和深度的多個通道。

以RGB圖像為例,每張圖片都是由三個數(shù)據(jù)通道構(gòu)成,分別為R、G和B通道。而對于灰度圖像,則只有一個通道。

對于一張圖片的通道數(shù)量和名稱,可以通過方法getbands()來獲取。方法getbands()是Image模塊的方法,它會返回一個字符串元組(tuple)。該元組將包括每一個通道的名稱。

Python的元組與列表類似,不同之處在于元組的元素不能修改,元組使用小括號,列表使用方括號,元組創(chuàng)建很簡單,只需要在括號中添加元素,并使用逗號隔開即可。

方法getbands()的使用如下:

from PIL import Imageim = Image.open('xiao.png')print(im.getbands())輸出:(’R’, ’G’, ’B’)

2、模式

圖像的模式定義了圖像的類型和像素的位寬。當前支持如下模式:

1:1位像素,表示黑和白,但是存儲的時候每個像素存儲為8bit。L:8位像素,表示黑和白。P:8位像素,使用調(diào)色板映射到其他模式。RGB:3x8位像素,為真彩色。RGBA:4x8位像素,有透明通道的真彩色。CMYK:4x8位像素,顏色分離。YCbCr:3x8位像素,彩色視頻格式。I:32位整型像素。F:32位浮點型像素。PIL也支持一些特殊的模式,包括RGBX(有padding的真彩色)和RGBa(有自左乘alpha的真彩色)。

可以通過mode屬性讀取圖像的模式。其返回值是包括上述模式的字符串。

屬性mode的使用如下:

from PIL import Imageim = Image.open('xiao.png')print(im.mode)輸出:’RGB’

3、尺寸

通過size屬性可以獲取圖片的尺寸。這是一個二元組,包含水平和垂直方向上的像素數(shù)。

屬性mode的使用如下:

from PIL import Imageim = Image.open('xiao.png')print(im.size)輸出:(670, 502)

4、坐標系統(tǒng)

PIL使用笛卡爾像素坐標系統(tǒng),坐標(0,0)位于左上角。注意:坐標值表示像素的角;位于坐標(0,0)處的像素的中心實際上位于(0.5,0.5)。

坐標經(jīng)常用于二元組(x,y)。長方形則表示為四元組,前面是左上角坐標。例如,一個覆蓋800x600的像素圖像的長方形表示為(0,0,800,600)。

5、調(diào)色板

調(diào)色板模式('P')使用一個顏色調(diào)色板為每個像素定義具體的顏色值

6、信息

使用info屬性可以為一張圖片添加一些輔助信息。這個是字典對象。加載和保存圖像文件時,多少信息需要處理取決于文件格式。

屬性info的使用如下:

from PIL import Imageim = Image.open('xiao.png')print(im.info)輸出:{}

7、濾波器

對于將多個輸入像素映射為一個輸出像素的幾何操作,PIL提供了4個不同的采樣濾波器:

NEAREST:最近濾波。從輸入圖像中選取最近的像素作為輸出像素。它忽略了所有其他的像素。BILINEAR:雙線性濾波。在輸入圖像的2x2矩陣上進行線性插值。注意:PIL的當前版本,做下采樣時該濾波器使用了固定輸入模板。BICUBIC:雙立方濾波。在輸入圖像的4x4矩陣上進行立方插值。注意:PIL的當前版本,做下采樣時該濾波器使用了固定輸入模板。ANTIALIAS:平滑濾波。這是PIL 1.1.3版本中新的濾波器。對所有可以影響輸出像素的輸入像素進行高質(zhì)量的重采樣濾波,以計算輸出像素值。在當前的PIL版本中,這個濾波器只用于改變尺寸和縮略圖方法。注意:在當前的PIL版本中,ANTIALIAS濾波器是下采樣(例如,將一個大的圖像轉(zhuǎn)換為小圖)時唯一正確的濾波器。BILIEAR和BICUBIC濾波器使用固定的輸入模板,用于固定比例的幾何變換和上采樣是最好的。

Image模塊中的方法resize()和thumbnail()用到了濾波器。

方法resize()的使用如下:

方法resize()的定義為:resize(size, filter=None)=> imagefrom PIL import Imageim = Image.open('xiao.png')print(im.size)im_resize = im.resize((256,256))print(im_resize.size)輸出:(670, 502)(256,256)

對參數(shù)filter不賦值的話,方法resize()默認使用NEAREST濾波器。如果要使用其他濾波器可以通過下面的方法來實現(xiàn):

from PIL import Imageim = Image.open('xiao.png')print(im.size)im_resize0 = im.resize((256,256), Image.BILINEAR)print(im_resize0.size)im_resize1 = im.resize((256,256), Image.BICUBIC)print(im_resize1.size)im_resize2 = im.resize((256,256), Image.ANTIALIAS)print(im_resize2.size)輸出:(670, 502)(256,256)(256,256)(256,256)

二、Image模塊:

Image模塊是PIL中最重要的模塊,它有一個類叫做image,與模塊名稱相同。Image類有很多函數(shù)、方法及屬性,接下來將依次對image類的屬性、函數(shù)和方法進行介紹。

一、Image類的屬性

1、Format

定義:im.format ⇒ string or None含義:源文件的文件格式。如果是由PIL創(chuàng)建的圖像,則其文件格式為None。例子:from PIL import Imageim= Image.open('xiao.png')print(im.format)輸出:’png’

2、Mode

定義:im.mode ⇒ string含義:圖像的模式。這個字符串表明圖像所使用像素格式。該屬性典型的取值為“1”,“L”,“RGB”或“CMYK”。

3、Size

定義:im.size ⇒ (width, height)含義:圖像的尺寸,按照像素數(shù)計算。它的返回值為寬度和高度的二元組(width, height)。

4、Palette

定義:im.palette ⇒ palette or None含義:顏色調(diào)色板表格。如果圖像的模式是“P”,則返回ImagePalette類的實例;否則,將為None。例子:from PIL import Imageim = Image.open('jing.jpg')print(im.mode)print(im.palette)輸出: RGBNone

5、Info

定義:im.info ⇒ dictionary含義:存儲圖像相關(guān)數(shù)據(jù)的字典。文件句柄使用該字典傳遞從文件中讀取的各種非圖像信息。大多數(shù)方法在返回新的圖像時都會忽略這個字典;因為字典中的鍵并非標準化的,對于一個方法,它不能知道自己的操作如何影響這個字典。 如果用戶需要這些信息,需要在方法open()返回時保存這個字典。

二、類的函數(shù):

1、New

定義:Image.new(mode,size) ⇒ image Image.new(mode, size, color) ⇒ image含義:使用給定的變量mode和size生成新的圖像。Size是給定的寬/高二元組,這是按照像素數(shù)來計算的。對于單通道圖像,變量color只給定一個值;對于多通道圖像,變量color給定一個元組(每個通道對應一個值)。 在版本1.1.4及其之后,用戶也可以用顏色的名稱,比如給變量color賦值為“red”。如果沒有對變量color賦值,圖像內(nèi)容將會被全部賦值為0(圖像即為黑色)。如果變量color是空,圖像將不會被初始化,即圖像的內(nèi)容全為0。 這對向該圖像復制或繪制某些內(nèi)容是有用的。例子:from PIL import Imageim= Image.new('RGB', (128, 128), '#FF0000')im.save('test1.png') #圖像im為128x128大小的紅色圖像。im= Image.new('RGB', (128, 128)) #圖像im為128x128大小的黑色圖像,因為變量color不賦值的話,圖像內(nèi)容被設(shè)置為0,即黑色。im.save('test2.png')im= Image.new('RGB', (128, 128), 'red') #圖像im為128x128大小的紅色圖像。im.save('test3.png')

2、Open

定義:Image.open(file) ⇒ image Image.open(file, mode) ⇒ image含義:打開并確認給定的圖像文件。這個是一個懶操作;該函數(shù)只會讀文件頭,而真實的圖像數(shù)據(jù)直到試圖處理該數(shù)據(jù)才會從文件讀取(調(diào)用load()方法將強行加載圖像數(shù)據(jù))。如果變量mode被設(shè)置,那必須是“r”。 用戶可以使用一個字符串(表示文件名稱的字符串)或者文件對象作為變量file的值。文件對象必須實現(xiàn)read(),seek()和tell()方法,并且以二進制模式打開。例子:from PIL import Imageim = Image.open('xiao.png')

3、Blend

定義:Image.blend(image1,image2, alpha) ⇒ image含義:使用給定的兩張圖像及透明度變量alpha,插值出一張新的圖像。這兩張圖像必須有一樣的尺寸和模式。 合成公式為:out = image1 *(1.0 - alpha) + image2 * alpha 如果變量alpha為0.0,將返回第一張圖像的拷貝。如果變量alpha為1.0,將返回第二張圖像的拷貝。對變量alpha的值沒有限制。例子:from PIL import Imageim1 = Image.open('jing.jpg')im2 = Image.open('wu.jpg')im = Image.blend(im1,im2,0.5)im.save('he.jpg')

4、Composite

定義:Image.composite(image1,image2, mask) ⇒ image含義:使用給定的兩張圖像及mask圖像作為透明度,插值出一張新的圖像。變量mask圖像的模式可以為“1”,“L”或者“RGBA”。所有圖像必須有相同的尺寸。例子:from PIL import Imageim1 = Image.open('jing.jpg')im2 = Image.open('wu.jpg')r,g,b = im1.split()print(g.mode)im = Image.composite(im1,im2,b)im.save('he.jpg')b.save('he1.jpg')

5、Eval

定義:Image.eval(image,function) ⇒ image含義:使用變量function對應的函數(shù)(該函數(shù)應該有一個參數(shù))處理變量image所代表圖像中的每一個像素點。如果變量image所代表圖像有多個通道,那變量function對應的函數(shù)作用于每一個通道。 注意:變量function對每個像素只處理一次,所以不能使用隨機組件和其他生成器。例子:from PIL import Imageim = Image.open('jing.jpg')def deffun(c): return c*0.89 #改變了亮度im_eval = Image.eval(im,deffun) im_eval.save('gai.jpg')注:圖像im_eval與im01比較,其像素值均為im01的一半,則其亮度自然也會比im01暗一些。

6、Frombuffer

定義:Image.frombuffer(mode,size, data) ⇒ image Image.frombuffer(mode, size,data, decoder, parameters) ⇒ image含義:(New in PIL 1.1.4)使用標準的“raw”解碼器,從字符串或者buffer對象中的像素數(shù)據(jù)產(chǎn)生一個圖像存儲。對于一些模式,這個圖像存儲與原始的buffer(這意味著對原始buffer對象的改變體現(xiàn)在圖像本身)共享內(nèi)存。 并非所有的模式都可以共享內(nèi)存;支持的模式有“L”,“RGBX”,“RGBA”和“CMYK”。對于其他模式,這個函數(shù)與fromstring()函數(shù)一致。注意:版本1.1.6及其以下,這個函數(shù)的默認情況與函數(shù)fromstring()不同。這有可能在將來的版本中改變,所以為了最大的可移植性,當使用“raw”解碼器時,推薦用戶寫出所有的參數(shù),如下所示:im =Image.frombuffer(mode, size, data, 'raw', mode, 0, 1)函數(shù)Image.frombuffer(mode,size, data, decoder, parameters)與函數(shù)fromstring()的調(diào)用一致。

7、Fromstring

定義:Image.fromstring(mode,size, data) ⇒ image Image.fromstring(mode, size,data, decoder, parameters) ⇒ image含義:函數(shù)Image.fromstring(mode,size, data),使用標準的“raw”解碼器,從字符串中的像素數(shù)據(jù)產(chǎn)生一個圖像存儲。函數(shù)Image.fromstring(mode,size, data, decoder, parameters)也一樣,但是允許用戶使用PIL支持的任何像素解碼器。更多信息可以參考:Writing YourOwn File Decoder.注意:這個函數(shù)只對像素數(shù)據(jù)進行解碼,而不是整個圖像。如果用戶的字符串包含整個圖像,可以將該字符串包裹在StringIO對象中,使用函數(shù)open()來加載。

8、Merge

定義:Image.merge(mode,bands) ⇒ image含義:使用一些單通道圖像,創(chuàng)建一個新的圖像。變量bands為一個圖像的元組或者列表,每個通道的模式由變量mode描述。所有通道必須有相同的尺寸。變量mode與變量bands的關(guān)系:len(ImageMode.getmode(mode).bands)= len(bands)例子:from PIL import Imageim1 = Image.open('jing.jpg')im2 = Image.open('wu.jpg')r1,g1,b1 = im1.split()r2,g2,b2 = im2.split()imgs =[r1,g2,b2]im_merge = Image.merge('RGB',imgs)im_merge.save('he.jpg')

三、Image類的方法

除非另作說明,Image類的所有方法都將返回一個Image類的新實例,這個實例對應于結(jié)果圖像。

1、Convert

定義1:im.convert(mode)⇒ image含義1:將當前圖像轉(zhuǎn)換為其他模式,并且返回新的圖像。當從一個調(diào)色板圖像轉(zhuǎn)換時,這個方法通過這個調(diào)色板來轉(zhuǎn)換像素。如果不對變量mode賦值,該方法將會選擇一種模式,在沒有調(diào)色板的情況下,使得圖像和調(diào)色板中的所有信息都可以被表示出來。當從一個顏色圖像轉(zhuǎn)換為黑白圖像時,PIL庫使用ITU-R601-2 luma轉(zhuǎn)換公式:L = R * 299/1000 + G * 587/1000 + B * 114/1000當轉(zhuǎn)換為2位圖像(模式“1”)時,源圖像首先被轉(zhuǎn)換為黑白圖像。結(jié)果數(shù)據(jù)中大于127的值被設(shè)置為白色,其他的設(shè)置為黑色;這樣圖像會出現(xiàn)抖動。如果要使用其他閾值,更改閾值127,可以使用方法point()。為了去掉圖像抖動現(xiàn)象,可以使用dither選項。 例子1:from PIL import Imageim1 = Image.open('jing.jpg')print(im1.mode)im_c = im1.convert('1')im_c.save('he.jpg')print(im_c.mode)輸出:1注:將“RGB”模式的im01圖像,轉(zhuǎn)換為“1”模式的im_c圖像。定義2:im.convert(“P”,**options) ⇒ image含義2:這個與第一個方法定義一樣,但是當“RGB”圖像轉(zhuǎn)換為8位調(diào)色板圖像時能更好的處理。可供選擇的選項為: Dither=. 控制顏色抖動。默認是FLOYDSTEINBERG,與鄰近的像素一起承擔錯誤。不使能該功能,則賦值為NONE。 Palette=. 控制調(diào)色板的產(chǎn)生。默認是WEB,這是標準的216色的“web palette”。要使用優(yōu)化的調(diào)色板,則賦值為ADAPTIVE。 Colors=. 當選項palette為ADAPTIVE時,控制用于調(diào)色板的顏色數(shù)目。默認是最大值,即256種顏色。 定義3:im.convert(mode,matrix) ⇒ image含義3:使用轉(zhuǎn)換矩陣將一個“RGB”圖像轉(zhuǎn)換為“L”或者“RGB”圖像。變量matrix為4或者16元組。例子3:下面的例子將一個RGB圖像(根據(jù)ITU-R709線性校準,使用D65亮度)轉(zhuǎn)換到CIE XYZ顏色空間:from PIL import Imageim1 = Image.open('jing.jpg')im1.modergb2xyz = ( 0.412453, 0.357580, 0.180423, 0, 0.212671, 0.715160, 0.072169, 0, 0.019334, 0.119193, 0.950227, 0 )im_c3 = im1.convert('L', rgb2xyz)im_c3.save('he.jpg')print(im_c3.mode)輸出:L

2、Copy

定義:im.copy() ⇒ image含義:拷貝這個圖像。如果用戶想粘貼一些數(shù)據(jù)到這張圖,可以使用這個方法,但是原始圖像不會受到影響。例子:from PIL import Imageim1 = Image.open('jing.jpg')im2 = im1.copy()im2.save('he.jpg')注:圖像im_copy和im01完全一樣。

3、Crop

定義:im.crop(box) ⇒ image含義:從當前的圖像中返回一個矩形區(qū)域的拷貝。變量box是一個四元組,定義了左、上、右和下的像素坐標。這是一個懶操作。對源圖像的改變可能或者可能不體現(xiàn)在裁減下來的圖像中。為了獲取一個分離的拷貝,對裁剪的拷貝調(diào)用方法load()。例子:from PIL import Imageim1 = Image.open('jing.jpg')print(im1.size)box = [0,0,650,400] #650(長)400(高)im_crop = im1.crop(box)im_crop.save('he.jpg')

4、Draft

定義:im.draft(mode,size)含義:配置圖像文件加載器,使得返回一個與給定的模式和尺寸盡可能匹配的圖像的版本。例如,用戶可以使用這個方法,在加載一個彩色JPEG圖像時將其轉(zhuǎn)換為灰色圖像,或者從一個PCD文件中提取一個128x192的版本。注意:這個方法會適時地修改圖像對象(精確地說,它會重新配置文件的讀取器)。如果圖像已經(jīng)被加載,那這個方法就沒有作用了。例子:from PIL import Imageim1 = Image.open('jing.jpg')im_draft = im1.draft('L',(500,500))print(im_draft.size)im_draft.save('he.jpg')輸出:(650, 650)

5、 Filter

定義:im.filter(filter) ⇒ image含義:返回一個使用給定濾波器處理過的圖像的拷貝。可用濾波器需要參考ImageFilter模塊。例子:from PIL import Image,ImageFilterim1 = Image.open('jing.jpg')im_filter = im1.filter(ImageFilter.BLUR)im_filter.save('he.jpg')注:圖像im_filter比im01變得有些模糊了。

6、 Fromstring

定義:im.fromstring(data) im.fromstring(data, decoder,parameters)含義:與函數(shù)fromstring()一樣,但是這個方法會將data加載到當前的圖像中。

7、 Getbands

定義:im.getbands()⇒ tuple of strings含義:返回包括每個通道名稱的元組。例如,對于RGB圖像將返回(“R”,“G”,“B”)。

8、 Getbbox

定義:im.getbbox() ⇒ 4-tuple or None含義:計算圖像非零區(qū)域的包圍盒。這個包圍盒是一個4元組,定義了左、上、右和下像素坐標。如果圖像是空的,這個方法將返回空。例子:from PIL import Imageim1 = Image.open('jing.jpg')print(im1.getbbox())輸出:(0, 0, 650, 650)

9、Getcolors

定義:im.getcolors() ⇒ a list of(count, color) tuples or None im.getcolors(maxcolors) ⇒ a list of (count, color) tuples or None含義:(New in 1.1.5)返回一個(count,color)元組的無序list,其中count是對應顏色在圖像中出現(xiàn)的次數(shù)。如果變量maxcolors的值被超過,該方法將停止計算并返回空。變量maxcolors默認值為256。為了保證用戶可以獲取圖像中的所有顏色,you can pass in size[0]*size[1](請確保有足夠的內(nèi)存做這件事)。例子:from PIL import Imageim1 = Image.open('test.png')print(im1.getcolors(8888888))輸出:[(2, (255, 255, 255, 233)), (9, (0, 0, 0, 136)), (1, (0, 0, 0, 64)), (2, (0, 0, 0, 24)), (5, (0, 0, 0, 56)).......

10、 Getdata

定義:im.getdata() ⇒ sequence含義:以包含像素值的sequence對象形式返回圖像的內(nèi)容。這個sequence對象是扁平的,以便第一行的值直接跟在第零行的值后面,等等。注意:這個方法返回的sequence對象是PIL內(nèi)部數(shù)據(jù)類型,它只支持某些sequence操作,包括迭代和基礎(chǔ)sequence訪問。使用list(im.getdata()),將它轉(zhuǎn)換為普通的sequence。例子:from PIL import Imageim1 = Image.open('jing.jpg')seq = im1.getdata()print(seq[0])seq0 = list(seq)print(seq0[0])print(len(seq0))輸出:(41, 183, 197)(41, 183, 197) #這個值是長和高之積注:Sequence對象的每一個元素對應一個像素點的R、G和B三個值。

11、 Getextrema

定義:im.getextrema() ⇒ 2-tuple含義:返回一個2元組,包括該圖像中的最小和最大值。例子:from PIL import Imageim1 = Image.open('jing.jpg')print(im1.getextrema())輸出:((0, 255), (0,255), (0, 255)) 該方法返回了R/G/B三個通道的最小和最大值的2元組。

12、 Getpixel

定義:im.getpixel(xy) ⇒ value or tuple含義:返回給定位置的像素值。如果圖像為多通道,則返回一個元組。注意:該方法執(zhí)行比較慢;如果用戶需要使用python處理圖像中較大部分數(shù)據(jù),可以使用像素訪問對象(見load),或者方法getdata()。例子:from PIL import Imageim1 = Image.open('jing.jpg')print(im1.getpixel((1,1)))print(im1.getpixel((649,649)))輸出:(41, 183, 197)(236, 210, 153)注:im.getpixel(xy)中的X,Y表示坐標,從0開始。

13、 Histogram

定義1:im.histogram()⇒ list含義1:返回一個圖像的直方圖。這個直方圖是關(guān)于像素數(shù)量的list,圖像中的每個象素值對應一個成員。如果圖像有多個通道,所有通道的直方圖會連接起來(例如,“RGB”圖像的直方圖有768個值)。 二值圖像(模式為“1”)當作灰度圖像(模式為“L”)處理。例子1:from PIL import Imageim1 = Image.open('jing.jpg')ls = im1.histogram()print(len(ls))print(ls[767])輸出:1471

14、 Load

定義:im.load()含義:為圖像分配內(nèi)存并從文件中加載它(或者從源圖像,對于懶操作)。正常情況下,用戶不需要調(diào)用這個方法,因為在第一次訪問圖像時,Image類會自動地加載打開的圖像。 (New in 1.1.6)在1.1.6及以后的版本,方法load()返回一個用于讀取和修改像素的像素訪問對象。這個訪問對象像一個二維隊列,如: pix = im.load() print pix[x, y] pix[x, y] =value 通過這個對象訪問比方法getpixel()和putpixel()快很多。例子:from PIL import Imageim1 = Image.open('jing.jpg')lm_load = im1.load()print(lm_load[649,649])輸出:(236, 210, 153)

15、Paste

定義1:im.paste(image,box)含義1:將一張圖粘貼到另一張圖像上。變量box或者是一個給定左上角的2元組,或者是定義了左,上,右和下像素坐標的4元組,或者為空(與(0,0)一樣)。如果給定4元組,被粘貼的圖像的尺寸必須與區(qū)域尺寸一樣。如果模式不匹配,被粘貼的圖像將被轉(zhuǎn)換為當前圖像的模式。例子1:from PIL import Imageim1 = Image.open('jing.jpg')box = [0,0,200,200]im_crop = im1.crop(box)im1.paste(im_crop,(200,200,400,400)) #等價于im1.paste(im_crop,(200,200))im1.save('he.jpg')定義2:im.paste(colour,box)含義2:它與定義1一樣,但是它使用同一種顏色填充變量box對應的區(qū)域。對于單通道圖像,變量colour為單個顏色值;對于多通道,則為一個元組。例子2:from PIL import Imageim1 = Image.open('jing.jpg')im1.paste((256,256,256),(200,100,500,200))im1.save('he.jpg')注:圖像im1的(200,100)位置將出現(xiàn)一個300x100的白色方塊,對于多通道的圖像,如果變量colour只給定一個數(shù)值,將只會應用于圖像的第一個通道。如果是“RGB”模式的圖像,將應用于紅色通道。定義3:im.paste(image,box, mask)含義3:與定義1一樣,但是它使用變量mask對應的模板圖像來填充所對應的區(qū)域。可以使用模式為“1”、“L”或者“RGBA”的圖像作為模板圖像。模板圖像的尺寸必須與變量image對應的圖像尺寸一致。 如果變量mask對應圖像的值為255,則模板圖像的值直接被拷貝過來;如果變量mask對應圖像的值為0,則保持當前圖像的原始值。變量mask對應圖像的其他值,將對兩張圖像的值進行透明融合。注意:如果變量image對應的為“RGBA”圖像,即粘貼的圖像模式為“RGBA”,則alpha通道被忽略。用戶可以使用同樣的圖像作為原圖像和模板圖像。例子3:from PIL import Imageim1 = Image.open('jing.jpg')box = [100,100,200,200]im_crop = im1.crop(box)r,g,b = im_crop.split()im1.paste(im_crop,(200,100,300,200),b)im1.save('he.jpg')注:在圖像im1的(0,0)位置將出現(xiàn)一個半透明的100x100的方塊。定義4:im.paste(colour,box, mask)含義4:與定義3一樣,只是使用變量colour對應的單色來填充區(qū)域。例子4:from PIL import Imageim1 = Image.open('jing.jpg')box = [100,100,200,200]im_crop = im1.crop(box)r,g,b = im_crop.split()im1.paste((0,256,0),(200,100,300,200),b)im1.save('he.jpg')注:在圖像im1的(0,0)位置將出現(xiàn)一個100x100的綠色方塊。

總結(jié)

到此這篇關(guān)于Python圖片處理模塊PIL操作方法(pillow)的文章就介紹到這了,更多相關(guān)Python圖片處理模塊PIL內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 欧美日韩亚洲一区二区三区在线观看 | 国产91精品一区二区 | 国产女主播一区二区在线观看 | 国产精品久久国产精品99 | 久久综合色婷婷 | 久久91精品国产91久久户 | 欧美亚洲综合另类在线观看 | 亚洲一二三 | 国产成人精品免费大全 | 中国国产一级毛片视频 | 国产片性视频免费播放 | 亚洲精品一区乱码在线观看 | 久久国产自偷自免费一区100 | 婷婷色爱区综合五月激情韩国 | 国产精品高清一区二区三区 | 日本五级黄色片 | 特黄免费| 久久er精品| 黄色带三级1 | 性大片免费视频观看 | 成人资源在线观看 | 色噜噜五月综合激情久久爱 | 中文学幕专区 | 激情爱爱网站 | 亚洲精品国产不卡在线观看 | 尤物视频在线观看免费 | 国产网站免费观看 | 国产a∨一区二区三区香蕉小说 | 久久国产精品久久久久久久久久 | 欧美一级毛片特黄大 | 国产在线短视频 | 国产在线观看福利一区二区 | 一区二区在线欧美日韩中文 | 经典三级一区二区三区视频 | 色妇女影院| 久久久国产高清 | 免费香蕉视频 | 欧美黄色a级 | 亚洲一级毛片在线播放 | 99久久免费国内精品 | 亚洲黄色三级网站 |