Pillow Image模塊功能

2021-07-13 15:31 更新
  • ?PIL.Image.open(fp, mode='r')?  打開并標(biāo)識給定的圖像文件。

這是一個懶惰的操作;此函數(shù)標(biāo)識文件,但文件保持打開狀態(tài),并且在嘗試處理數(shù)據(jù)(或調(diào)用 ?load() ?方法)。見 ?new()? 。請參閱Pillow 中的文件處理。

參數(shù)
  • fp – 文件名(字符串)、?pathlib.Path ?對象或文件對象。文件對象必須實現(xiàn)file.read、 file.seekfile.tell方法,并以二進制模式打開。

  • 模式- 模式。如果給出,這個參數(shù)必須是“r”。

  • 格式- 嘗試加載文件的格式列表或元組。這可用于限制檢查的格式集。通過None以嘗試所有支持的格式。您可以通過運行?python3 -m PIL?或使用?PIL.features.pilinfo()?函數(shù)來打印可用格式集。

返回

一個Image對象。

引發(fā)
  • ?FileNotFoundError ?– 如果找不到文件。

  • ?PIL.UnidentifiedImageError? – 如果無法打開和識別圖像。

  • ?ValueError? – 如果mode不是“r”,或者StringIO 實例用于fp.

  • ?TypeError ?– 如果formats不是None,則為列表或元組。

為了防止“解壓炸彈”(即解壓成大量數(shù)據(jù)的惡意文件,旨在通過使用大量內(nèi)存而崩潰或造成中斷)引起的潛在 DOS 攻擊,如果像素數(shù)在圖像中超過某個限制,Pillow 將發(fā)出一個?DecompressionBombWarning? ,?PIL.Image.MAX_IMAGE_PIXELS?。
這個閾值可以通過設(shè)置?PIL.Image.MAX_IMAGE_PIXELS?來改變。也可以通過設(shè)置? Image.MAX_IMAGE_PIXELS = None?禁用它。
如果需要,可以使用 將警告轉(zhuǎn)換為帶有?warnings.simplefilter('error', Image.DecompressionBombWarning)?的錯誤或使用 ? ?warnings.simplefilter('ignore', Image.DecompressionBombWarning)??完全抑制 。另請參閱 日志記錄文檔以將警告輸出到日志記錄工具而不是使用 stderr。
如果像素數(shù)大于兩倍?PIL.Image.MAX_IMAGE_PIXELS?,則 DecompressionBombError?將被提升。

圖像處理

?PIL.Image.alpha_composite(im1im2)?

IM1上的Alpha復(fù)合IM2。

參數(shù)
  • im1 -- 第一張圖片。必須具有模式RGBA。

  • im2 -- 第二張圖片。必須具有模式RGBA,并且大小與第一個圖像相同。

返回

一個 Image 對象。

?PIL.Image.blend(im1im2alpha)?

通過使用常量alpha在兩個輸入圖像之間插入來創(chuàng)建新圖像。:

out = image1 * (1.0 - alpha) + image2 * alpha
參數(shù)
  • im1 -- 第一張圖片。

  • im2 -- 第二張圖片。必須與第一個圖像具有相同的模式和大小。

  • alpha -- 插值α因子。如果alpha為0.0,則返回第一個圖像的副本。如果alpha為1.0,則返回第二個圖像的副本。alpha值沒有限制。如有必要,將結(jié)果裁剪到允許的輸出范圍內(nèi)。

返回

一個Image 對象。

?PIL.Image.composite(image1image2mask)?

通過使用透明蒙版混合圖像來創(chuàng)建合成圖像。

參數(shù)
  • image1 -- 第一張圖片。

  • image2 -- 第二張圖片。必須與第一個圖像具有相同的模式和大小。

  • mask -- 掩模圖像。此圖像可以具有模式“1”、“l(fā)”或“RGBA”,并且必須與其他兩個圖像具有相同的大小。

?PIL.Image.eval(image*args)?

對給定圖像中的每個像素應(yīng)用函數(shù)(應(yīng)采用一個參數(shù))。如果圖像有多個波段,則對每個波段應(yīng)用相同的功能。請注意,該函數(shù)對每個可能的像素值進行一次評估,因此不能使用隨機組件或其他生成器。

參數(shù)
  • image -- 輸入圖像。

  • function -- 一個函數(shù)對象,采用一個整型參數(shù)。

返回

一個 Image 對象。

?PIL.Image.merge(modebands)?

將一組單波段圖像合并為新的多波段圖像。

參數(shù)
  • mode -- 用于輸出圖像的模式。見: 模式 。

  • bands -- 包含輸出圖像中每個波段一個單波段圖像的序列。所有帶區(qū)的大小必須相同。

返回

一個 Image 對象。

構(gòu)建圖像

?PIL.Image.new(modesizecolor=0)?

創(chuàng)建具有給定模式和大小的新圖像。

參數(shù)
  • mode -- 用于新圖像的模式。見: 模式 

  • size -- 以像素為單位包含(寬度、高度)的2元組。

  • color -- 圖像要使用什么顏色。默認(rèn)為黑色。如果給定,對于單波段模式,這應(yīng)該是一個整數(shù)或浮點值,對于多波段模式,這應(yīng)該是一個元組(每個波段一個值)。創(chuàng)建RGB圖像時,還可以使用ImageColor模塊支持的顏色字符串。如果顏色為“無”,則圖像不會初始化。

返回

一個 Image 對象。

?PIL.Image.fromarray(objmode=None)?

從導(dǎo)出數(shù)組接口的對象(使用緩沖區(qū)協(xié)議)創(chuàng)建圖像內(nèi)存。

如果 obj 不是連續(xù)的,則調(diào)用?tobytes?方法并使用 frombuffer() 。

如果你有一張NumPy的圖片:

from PIL import Image
import numpy as np
im = Image.open('hopper.jpg')
a = np.asarray(im)

然后可以將其轉(zhuǎn)換為Pillow圖像:

im = Image.fromarray(a)
參數(shù)
  • obj -- 帶數(shù)組接口的對象

  • mode -- 要使用的模式(如果沒有將由類型決定)見: 模式 。

返回

一個?Image?對象。

1.1.6 新版功能。

?PIL.Image.frombytes(modesizedatadecoder_name='raw'*args)?

從緩沖區(qū)中的像素數(shù)據(jù)創(chuàng)建圖像內(nèi)存的副本。

最簡單的形式是,這個函數(shù)接受三個參數(shù)(模式、大小和未壓縮的像素數(shù)據(jù))。

您還可以使用PIL支持的任何像素解碼器。有關(guān)可用解碼器的詳細信息,請參閱部分 編寫你自己的文件解碼器。

請注意,此函數(shù)只解碼像素數(shù)據(jù),而不是整個圖像。如果在字符串中包含整個圖像,請將其包裝為 BytesIO 對象中,然后使用open()來加載它。

參數(shù)
  • mode -- 圖像模式。見:  模式 。

  • size -- 圖像大小。

  • data -- 包含給定模式的原始數(shù)據(jù)的字節(jié)緩沖區(qū)。

  • decoder_name -- 使用什么解碼器。

  • args -- 給定解碼器的其他參數(shù)。

返回

一個 Image 對象。

?PIL.Image.frombuffer(modesizedatadecoder_name='raw'*args)?

在字節(jié)緩沖區(qū)中創(chuàng)建引用像素數(shù)據(jù)的圖像內(nèi)存。

此功能類似于 frombytes() ,但盡可能使用字節(jié)緩沖區(qū)中的數(shù)據(jù)。這意味著對原始緩沖區(qū)對象的更改將反映在此圖像中)。并非所有模式都可以共享內(nèi)存;支持的模式包括“l(fā)”、“rgbx”、“rgba”和“cmyk”。

請注意,此函數(shù)只解碼像素數(shù)據(jù),而不是整個圖像。如果您有一個字符串中的整個圖像文件, ?請將其包裝在一個BytesIO? 對象中,然后使用 open() 來加載它。

在當(dāng)前版本中,用于“原始”解碼器的默認(rèn)參數(shù)與用于 frombytes() 。這是一個bug,可能會在將來的版本中修復(fù)。如果執(zhí)行此操作,當(dāng)前版本將發(fā)出警告;要禁用該警告,應(yīng)提供完整的參數(shù)集。詳情見下文。

參數(shù)
  • mode -- 圖像模式。見: 模式 。

  • size -- 圖像大小。

  • data -- 包含給定模式的原始數(shù)據(jù)的字節(jié)或其他緩沖區(qū)對象。

  • decoder_name -- 使用什么解碼器。

  • args -- 給定解碼器的其他參數(shù)。對于默認(rèn)編碼器(“raw”),建議您提供完整的參數(shù)集:

    frombuffer(mode, size, data, "raw", mode, 0, 1)
返回

一個Image 對象。

1.1.4 新版功能。

生成圖像

?PIL.Image.effect_mandelbrot(sizeextentquality)?

生成覆蓋給定范圍的Mandelbrot集。

參數(shù)
  • size -- 以像素為單位的請求大小,作為2元組:(寬度、高度)。

  • extent -- 要覆蓋的范圍,作為4元組:(x0,y0,x1,y2)。

  • quality -- 質(zhì)量。

?PIL.Image.effect_noise(sizesigma)?

生成以128為中心的高斯噪聲。

參數(shù)
  • size -- 以像素為單位的請求大小,作為2元組:(寬度、高度)。

  • sigma -- 噪聲標(biāo)準(zhǔn)差。

?PIL.Image.linear_gradient(mode)?

生成從黑到白、從上到下的 256x256 線性漸變。

參數(shù)

mode -- 輸入模式。

?PIL.Image.radial_gradient(mode)?

生成從黑色到白色,中心到邊緣的 256x256 徑向漸變。

參數(shù)

mode -- 輸入模式。

注冊插件

這些函數(shù)供插件作者使用。應(yīng)用程序作者可以忽略它們。

?PIL.Image.register_open(idfactoryaccept=None)?

注冊圖像文件插件。應(yīng)用程序代碼中不應(yīng)使用此函數(shù)。

參數(shù)
  • id -- 圖像格式標(biāo)識符。

  • factory -- 圖像文件工廠方法。

  • accept -- 一種可選功能,可用于快速拒絕具有其他格式的圖像。

?PIL.Image.register_mime(idmimetype)?

注冊圖像MINE類型。應(yīng)用程序代碼中不應(yīng)使用此函數(shù)。

參數(shù)
  • id -- 圖像格式標(biāo)識符。

  • mimetype -- 此格式的圖像mime類型。

?PIL.Image.register_save(iddriver)?

注冊圖像保存功能。應(yīng)用程序代碼中不應(yīng)使用此函數(shù)。

參數(shù)
  • id -- 圖像格式標(biāo)識符。

  • driver -- 以這種格式保存圖像的函數(shù)。

?PIL.Image.register_save_all(iddriver)?

注冊一個圖像函數(shù)來保存多幀格式的所有幀。應(yīng)用程序代碼中不應(yīng)使用此函數(shù)。

參數(shù)
  • id -- 圖像格式標(biāo)識符。

  • driver -- 以這種格式保存圖像的函數(shù)。

?PIL.Image.register_extension(idextension)?

注冊圖像擴展名。應(yīng)用程序代碼中不應(yīng)使用此函數(shù)。

參數(shù)
  • id -- 圖像格式標(biāo)識符。

  • extension -- 用于此格式的擴展名。

?PIL.Image.register_extensions(idextensions)?

注冊映像擴展名。應(yīng)用程序代碼中不應(yīng)使用此函數(shù)。

參數(shù)
  • id -- 圖像格式標(biāo)識符。

  • extensions -- 用于此格式的擴展名列表。

?PIL.Image.registered_extensions()?

返回包含所有屬于已注冊插件的文件擴展名的字典

?PIL.Image.register_decoder(namedecoder)?

注冊圖像解碼器。應(yīng)用程序代碼中不應(yīng)使用此函數(shù)。

參數(shù)
  • name -- 解碼器的名稱

  • decoder -- 返回?imagefile.pydecoder?對象的可調(diào)用(模式,參數(shù))

4.1.0 新版功能。

?PIL.Image.register_encoder(nameencoder)?

注冊圖像編碼器。應(yīng)用程序代碼中不應(yīng)使用此函數(shù)。

參數(shù)
  • name -- 編碼器的名稱

  • encoder -- 返回?imagefile.pyencoder?對象的可調(diào)用(模式,參數(shù))

4.1.0 新版功能。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號