Pillow Image圖像類

2021-07-12 17:56 更新
?classPIL.Image.Image?

這個類表示一個圖像對象。要創(chuàng)建 Image 對象,請使用適當(dāng)?shù)墓S函數(shù)。幾乎沒有任何理由直接調(diào)用Image構(gòu)造函數(shù)。

  • ?open()?

  • new()

  • frombytes()

 Image? 類的實例具有以下方法。除非另有說明,否則所有方法都返回 ?Image?類的實例,保存生成的圖像。

?Image.alpha_composite(imdest=0, 0source=0, 0)?

Image.alpha_composite的“就地”模擬。將圖像合成到該圖像上。

參數(shù)
  • im -- 要在此圖像上合成的圖像

  • dest -- 可選的2個元組(左上角),指定此(目標(biāo))圖像中的左上角。

  • source -- 覆蓋源圖像中左上角的可選2(左,上)元組,或源矩形邊界的4個元組(左,上,右,下)

性能說明:目前沒有在核心層中就地實現(xiàn)。

?Image.convert(mode=Nonematrix=Nonedither=Nonepalette=0colors=256)?

返回此圖像的轉(zhuǎn)換副本。對于“P”模式,此方法通過調(diào)色板轉(zhuǎn)換像素。如果省略了mode,則會選擇一個模式,以便可以在不使用調(diào)色板的情況下表示圖像和調(diào)色板中的所有信息。

當(dāng)前版本支持“l(fā)”、“RGB”和“CMYK”之間的所有可能轉(zhuǎn)換。這個 ?matrix參數(shù)只支持“L”和“RGB”。

將彩色圖像轉(zhuǎn)換為灰度(模式“L”)時,庫使用ITU-R 601-2 Luma轉(zhuǎn)換:

L = R * 299/1000 + G * 587/1000 + B * 114/1000

將灰度(“L”)或“RGB”圖像轉(zhuǎn)換為雙層(模式“1”)圖像的默認(rèn)方法使用Floyd Steinberg抖動來近似原始圖像的亮度級別。如果抖動 NONE ,則所有大于 127 的值都設(shè)置為 255(白色),所有其他值設(shè)置為 0(黑色)。要使用其他閾值,請使用 ?point()?方法。

當(dāng)不帶matrix參數(shù)從“RGBA”轉(zhuǎn)換為“P”時,這會將操作傳遞給quantize()、 和dither并被palette忽略。

參數(shù)
  • mode -- 請求的模式。見: 模式 。

  • matrix -- 可選的轉(zhuǎn)換矩陣。如果給定,則應(yīng)該是包含浮點值的4或12元組。

  • dither -- 抖動方法,在從模式“RGB”轉(zhuǎn)換為“P”或從“RGB”或“L”轉(zhuǎn)換為“1”時使用??捎玫姆椒ㄊ?code style="background-color: rgb(255, 255, 255);">?NONE?或?FLOYDSTEINBERG?(默認(rèn))。請注意,matrix提供時不使用此選項。

  • palette -- 從模式“RGB”轉(zhuǎn)換為“P”時要使用的調(diào)色板。可用的選項板有 WEB 或 ADAPTIVE .

  • colors -- 要用于 ADAPTIVE 調(diào)色板。默認(rèn)為256。

返回類型

Image

返回

一個 Image 對象。

以下示例將RGB圖像(根據(jù)ITU-R 709線性校準(zhǔn),使用D65亮度)轉(zhuǎn)換為CIE XYZ顏色空間:

rgb2xyz = (
    0.412453, 0.357580, 0.180423, 0,
    0.212671, 0.715160, 0.072169, 0,
    0.019334, 0.119193, 0.950227, 0)
out = im.convert("RGB", rgb2xyz)
?Image.copy()?

復(fù)制此圖像。如果要將內(nèi)容粘貼到圖像中,但仍保留原始內(nèi)容,請使用此方法。

返回類型

Image

返回

一個 Image 對象。

?Image.crop(box=None)?

返回此圖像中的矩形區(qū)域??蚴嵌x左、上、右和下像素坐標(biāo)的四元組。

注意:在Pillow3.4.0之前,這是一個懶惰的操作。

參數(shù)

box -- 裁剪矩形,作為(左、上、右、下)元組。

返回類型

Image

返回

一個 Image 對象。

這將使用提供的坐標(biāo)裁剪輸入圖像:

from PIL import Image

im = Image.open("hopper.jpg")

# The crop method from the Image module takes four coordinates as input.
# The right can also be represented as (left+width)
# and lower can be represented as (upper+height).
(left, upper, right, lower) = (20, 20, 100, 100)

# Here the image "im" is cropped and assigned to new variable im_crop
im_crop = im.crop((left, upper, right, lower))
?Image.draft(modesize)?

配置 Mapfile 加載程序,使其返回盡可能與給定模式和大小匹配的映像版本。例如,可以使用此方法在加載彩色JPEG時將其轉(zhuǎn)換為灰度。

如果進(jìn)行了任何更改,則返回一個帶有 mode 和 box 原始圖像的坐標(biāo)在修改后的圖像內(nèi)。

請注意,此方法修改了 Image 物體就位。如果圖像已加載,則此方法無效。

注意:此方法不適用于大多數(shù)圖像。它目前只為JPEG和MPO圖像實現(xiàn)。

參數(shù)
  • mode -- 請求的模式。

  • size -- 請求的大小。

?Image.effect_spread(distance)?

在圖像中隨機(jī)分布像素。

參數(shù)

distance -- 擴(kuò)散像素的距離。

?Image.entropy(mask=Noneextrema=None)?

計算并返回圖像的熵。

該方法將二級圖像(模式“1”)作為灰度(“L”)圖像處理。

如果提供了遮罩,則該方法對遮罩圖像為非零的圖像部分使用直方圖。遮罩圖像的大小必須與圖像相同,并且是雙層圖像(模式“1”)或灰度圖像(“L”)。

參數(shù)
  • mask -- 一個可選的遮罩。

  • extrema -- 手動指定的極值的可選元組。

返回

表示圖像熵的浮點值

?Image.filter(filter)?

使用給定的篩選器篩選此圖像。有關(guān)可用篩選器的列表,請參閱 ImageFilter 模塊。

參數(shù)

filter -- 過濾內(nèi)核。

返回

一個Image 對象。

這將使用來自 ?ImageFilter ?模塊:

from PIL import Image, ImageFilter

im = Image.open("hopper.jpg")

# Blur the input image using the filter ImageFilter.BLUR
im_blurred = im.filter(filter=ImageFilter.BLUR)
Image.frombytes(datadecoder_name='raw'*args)?

從bytes對象加載此圖像和像素數(shù)據(jù)。

此方法類似于 frombytes() 函數(shù),但將數(shù)據(jù)加載到此圖像中,而不是創(chuàng)建新的圖像對象。

Image.getbands()?

返回一個包含此圖像中每個帶區(qū)的名稱的元組。例如, getbands 在RGB圖像上返回(“R”、“G”、“B”)。

返回

包含帶區(qū)名稱的元組。

返回類型

?tuple?

這有助于獲取輸入圖像的波段:

from PIL import Image

im = Image.open("hopper.jpg")
print(im.getbands())  # Returns ('R', 'G', 'B')
?Image.getbbox()?

計算圖像中非零區(qū)域的邊界框。

返回

邊界框作為定義左、上、右和下像素坐標(biāo)的四元組返回。 如果圖像完全為空,則此方法返回“?None?”。

這有助于獲取輸入圖像的邊界框坐標(biāo):

from PIL import Image

im = Image.open("hopper.jpg")
print(im.getbbox())
# Returns four coordinates in the format (left, upper, right, lower)
?Image.getchannel(channel)?

返回包含源圖像的單個通道的圖像。

參數(shù)

channel -- 返回哪個通道。可以是索引(“rgb”的“r”通道為0)或通道名稱(“rgb a”的alpha通道為a”)。

返回

處于“L”模式的圖像。

4.3.0 新版功能。

?Image.getcolors(maxcolors=256)?

返回此圖像中使用的顏色列表。顏色將處于圖像模式。例如,RGB 圖像將返回(紅色、綠色、藍(lán)色)顏色值的元組,而 P 圖像將返回調(diào)色板中顏色的索引。

參數(shù)

maxcolors -- 最大顏色數(shù)。如果超過此數(shù)字,此方法將返回?None?。默認(rèn)限制為256色。

返回

(計數(shù)、像素)值的未排序列表。

?Image.getdata(band=None)?

將此圖像的內(nèi)容作為包含像素值的序列對象返回。序列對象被展平,因此行1的值直接位于行0的值之后,依此類推。

注意,這個方法返回的序列對象是一個內(nèi)部PIL數(shù)據(jù)類型,它只支持特定的序列操作。要將其轉(zhuǎn)換為普通序列(例如用于打?。?,請使用?list(im.getdata())?。

參數(shù)

band -- 返回哪個波段。默認(rèn)值是返回所有帶區(qū)。要返回單個波段,請傳遞索引值(例如0,從“rgb”圖像中獲取“r”波段)。

返回

類似序列的對象。

?Image.getexif()?
?Image.getextrema()?

獲取圖像中每個波段的最小和最大像素值。

返回

對于單波段圖像,包含最小和最大像素值的2元組。對于多波段圖像,每個波段包含一個2元組的元組。

?Image.getpalette()?

以列表形式返回圖像調(diào)色板。

返回

如果圖像沒有調(diào)色板,則顯示顏色值列表[R、G、B…]或無。

?Image.getpixel(xy)?

返回給定位置的像素值。

參數(shù)

xy -- 坐標(biāo),以(x,y)表示。

返回

像素值。如果圖像是多層圖像,則此方法返回元組。

?Image.getprojection()?

得到x軸和y軸的投影

返回

兩個序列,分別指示沿X軸和Y軸有非零像素的位置。

?Image.histogram(mask=Noneextrema=None)?

返回圖像的直方圖。柱狀圖以像素計數(shù)列表的形式返回,每個像素值對應(yīng)一個源圖像。如果圖像有多個波段,則所有波段的柱狀圖都會連接起來(例如,“RGB”圖像的柱狀圖包含768個值)。

該方法將二級圖像(模式“1”)作為灰度(“L”)圖像處理。

如果提供了遮罩,該方法將返回圖像中遮罩圖像非零部分的直方圖。遮罩圖像必須與圖像具有相同的大小,并且是雙層圖像(模式“1”)或灰度圖像(“L”)。

參數(shù)
  • mask -- 一個可選的遮罩。

  • extrema -- 手動指定的極值的可選元組。

返回

包含像素計數(shù)的列表。

?Image.paste(imbox=Nonemask=None)?

將另一個圖像粘貼到此圖像中。box參數(shù)要么是給出左上角的2元組,要么是定義左、上、右和下像素坐標(biāo)的4元組,要么是?None?(與(0,0)相同)。如果給定4元組,則粘貼圖像的大小必須與區(qū)域的大小匹配。

如果模式不匹配,則粘貼的圖像將轉(zhuǎn)換為此圖像的模式(請參見 convert() 詳細(xì)方法)。

源可以是包含像素值的整數(shù)或元組,而不是圖像。然后,該方法用給定的顏色填充該區(qū)域。創(chuàng)建RGB圖像時,還可以使用ImageColor模塊支持的顏色字符串。

如果給定了遮罩,則此方法僅更新遮罩指示的區(qū)域。您可以使用“1”、“l(fā)”或“rgba”圖像(在后一種情況下,alpha帶用作遮罩)。如果遮罩為255,則按原樣復(fù)制給定圖像。如果遮罩為0,則保留當(dāng)前值。中間值將兩個圖像混合在一起,包括它們的alpha通道(如果有的話)。

如果你想結(jié)合圖像的阿爾法通道,可以參考alpha_composite() 。

參數(shù)
  • im -- 源圖像或像素值(整數(shù)或元組)。

  • box -- 一個可選的4元組,給出要粘貼到的區(qū)域。如果使用2元組,則將其視為左上角。如果省略或沒有,則源將粘貼到左上角。如果將圖像作為第二個參數(shù)提供,而沒有第三個參數(shù),則框默認(rèn)為(0,0),第二個參數(shù)將解釋為遮罩圖像。

  • mask -- 可選的遮罩圖像。

?Image.point(lutmode=None)?

通過查找表或函數(shù)映射此圖像。

參數(shù)
  • lut -- 一個查找表,包含圖像中每個波段的256個(或65536個,如果self.mode==“i”和mode==“l(fā)”)值??梢允褂煤瘮?shù)代替,它應(yīng)該采用單個參數(shù)。對每個可能的像素值調(diào)用一次函數(shù),結(jié)果表將應(yīng)用于圖像的所有波段。它也可能是一個???ImagePointHandler?? ?對象:

    class Example(Image.ImagePointHandler):
      def point(self, data):
        # Return result
  • mode -- 輸出模式(默認(rèn)與輸入相同)。在當(dāng)前版本中,只有當(dāng)源圖像具有模式“L”或“P”,并且輸出具有模式“1”或源圖像模式為“I”,并且輸出模式為“L”時,才能使用此選項。

返回

一個 Image 對象。

?Image.putalpha(alpha)?

添加或替換此圖像中的alpha層。如果圖像沒有alpha層,它將轉(zhuǎn)換為“l(fā)a”或“rgba”。新層必須是“l(fā)”或“1”。

參數(shù)

alpha -- 新的alpha層。這可以是與此圖像大小相同的“l(fā)”或“1”圖像,也可以是整數(shù)或其他顏色值。

?Image.putdata(datascale=1.0offset=0.0)?

將像素數(shù)據(jù)復(fù)制到此圖像。此方法將數(shù)據(jù)從序列對象復(fù)制到圖像中,從左上角(0,0)開始,一直復(fù)制到圖像或序列結(jié)束。比例和偏移值用于調(diào)整序列值: 像素=值*比例+偏移.

參數(shù)
  • data -- 序列對象。

  • scale -- 可選的比例值。默認(rèn)值為1.0。

  • offset -- 可選的偏移值。默認(rèn)值為0.0。

?Image.putpalette(datarawmode='RGB')?

將調(diào)色板附加到此圖像。圖像必須是“p”、“p a”、“l(fā)”或“l(fā)a”圖像,調(diào)色板序列必須包含768個整數(shù)值,其中每組三個值代表對應(yīng)像素索引的紅色、綠色和藍(lán)色值。您可以使用8位字符串代替整數(shù)序列。

參數(shù)
  • data -- 調(diào)色板序列(列表或字符串)。

  • rawmode -- 調(diào)色板的原始模式。

?Image.putpixel(xyvalue)?

修改給定位置的像素。對于單波段圖像,顏色以單個數(shù)值表示,對于多波段圖像,顏色以元組表示。除此之外,p圖像還接受rgb和rgba元組。

請注意,此方法相對較慢。要進(jìn)行更廣泛的更改,請使用 paste() 或 ImageDraw 模塊代替。

參見:

  • paste()

  • putdata()

  • ImageDraw

參數(shù)
  • xy -- 像素坐標(biāo),表示為(x,y)。

  • value -- 像素值。

?Image.quantize(colors=256method=Nonekmeans=0palette=Nonedither=1)?

使用指定的顏色數(shù)將圖像轉(zhuǎn)換為“p”模式。

參數(shù)
  • colors -- 所需的顏色數(shù),<=256

  • method -- MEDIANCUT (中位數(shù)切割), MAXCOVERAGE (最大覆蓋率), FASTOCTREE (快速八叉樹), LIBIMAGEQUANT (libimagequant;檢查支持使用 PIL.features.check_feature() 具有 feature="libimagequant" )默認(rèn)情況下,?MEDIANCUT?將使用。

    RGBA 圖像除外。?MEDIANCUT?并且 ?MAXCOVERAGE?不支持 RGBA 圖像,因此 ?FASTOCTREE?默認(rèn)使用。

  • kmeans -- 整數(shù)

  • palette -- 量化到給定的調(diào)色板 ?PIL.Image.Image? .

  • dither -- 抖動方法,從模式“RGB”轉(zhuǎn)換為“P”或從“RGB”或“L”轉(zhuǎn)換為“1”時使用??捎玫姆椒ㄓ?nbsp;?NONE? 或 ?FLOYDSTEINBERG? (默認(rèn))。默認(rèn)值:1(傳統(tǒng)設(shè)置)

返回

一個新的image對象

?Image.reduce(factorbox=None)?

返回圖像減少factor次數(shù)的副本。如果圖像的大小不能被 整除factor,則結(jié)果大小將被四舍五入。

參數(shù)
  • factor -- 寬度和高度分別大于0的整數(shù)或兩個整數(shù)的元組。

  • box -- 一個可選的4元組整數(shù),提供要縮小的源圖像區(qū)域。值必須在(0,0,width,height)矩形內(nèi)。如果省略或?None?,則使用整個源。

?Image.remap_palette(dest_mapsource_palette=None)?

重寫圖像以重新排序調(diào)色板。

參數(shù)
  • dest_map -- 原始調(diào)色板中的索引列表。例如? [1,0] ?將交換一個兩項調(diào)色板,?list(range(256))?是標(biāo)識轉(zhuǎn)換。

  • source_palette -- Bytes 或 None。

返回

一個Image 對象。

?Image.resize(sizeresample=3box=Nonereducing_gap=None)?

返回此圖像的已調(diào)整大小的副本。

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

  • resample -- 可選的重新采樣過濾器。這可能是 PIL.Image.NEAREST , PIL.Image.BOX , PIL.Image.BILINEAR , PIL.Image.HAMMING , PIL.Image.BICUBIC 或 PIL.Image.LANCZOS 。默認(rèn)篩選器為 PIL.Image.BICUBIC 。 如果圖像具有模式“1”或“P”,則始終設(shè)置為 PIL.Image.NEAREST 。

  • box -- 一個可選的4元組浮點數(shù),提供要縮放的源圖像區(qū)域。值必須在(0,0,width,height)矩形內(nèi)。如果省略或?None?,則使用整個源。

  • reducing_gap --  通過分兩步調(diào)整圖像大小來應(yīng)用優(yōu)化。首先,使用 將圖像縮小整數(shù)倍?reduce()?。其次,使用常規(guī)重采樣調(diào)整大小。最后一步改變大小不少于reducing_gap次。 reducing_gap可以是 ?None?(不執(zhí)行第一步)或應(yīng)該大于 1.0。越大reducing_gap,結(jié)果越接近公平重采樣。越小reducing_gap,調(diào)整大小越快。隨著reducing_gap大于或等于3.0,結(jié)果是公平的,從在大多數(shù)情況下重采樣難以區(qū)分。默認(rèn)值為 ?None?(無優(yōu)化)。

返回

一個 Image 對象。

這將調(diào)整給定圖像的大小? (width, height)? 到 ?(width/2, height/2)? :

from PIL import Image

im = Image.open("hopper.jpg")

# Provide the target width and height of the image
(width, height) = (im.width // 2, im.height // 2)
im_resized = im.resize((width, height))
Image.rotate(angleresample=0expand=0center=Nonetranslate=Nonefillcolor=None)

返回此圖像的旋轉(zhuǎn)副本。此方法返回此圖像的副本,圍繞其中心逆時針旋轉(zhuǎn)給定的度數(shù)。

參數(shù)
  • angle -- 逆時針角度。

  • resample -- 可選的重新采樣過濾器。這可能是 PIL.Image.NEAREST (使用最近的鄰居) PIL.Image.BILINEAR (2x2環(huán)境中的線性插值),或 PIL.Image.BICUBIC (4x4環(huán)境中的三次樣條插值)。如果省略,或者圖像具有模式“1”或“P”,則設(shè)置為 PIL.Image.NEAREST 。

  • expand -- 可選擴(kuò)展標(biāo)志。如果為真,則展開輸出圖像,使其足夠大以容納整個旋轉(zhuǎn)圖像。如果為false或省略,則使輸出圖像與輸入圖像大小相同。請注意,展開標(biāo)志假定圍繞中心旋轉(zhuǎn),不進(jìn)行平移。

  • center -- 可選旋轉(zhuǎn)中心(2元組)。原點是左上角。默認(rèn)為圖像的中心。

  • translate -- 可選的后旋轉(zhuǎn)翻譯(2元組)。

  • fillcolor -- 旋轉(zhuǎn)圖像外部區(qū)域的可選顏色。

返回

一個 Image 對象。

這將使輸入圖像旋轉(zhuǎn) ?theta ?逆時針度數(shù):

from PIL import Image

im = Image.open("hopper.jpg")

# Rotate the image by 60 degrees counter clockwise
theta = 60
# Angle is in degrees counter clockwise
im_rotated = im.rotate(angle=theta)
?Image.save(fpformat=None**params)?

以給定的文件名保存此圖像。如果未指定格式,則盡可能根據(jù)文件擴(kuò)展名確定要使用的格式。

關(guān)鍵字選項可用于向作者提供附加說明。如果作者不認(rèn)識一個選項,它會被默默地忽略

您可以使用文件對象而不是文件名。在這種情況下,您必須始終指定格式。文件對象必須實現(xiàn)?seek?,?tell?和?write ?方法,并在二進(jìn)制模式打開。

參數(shù)
  • fp -- 文件名(字符串)、?pathlib.path?對象或文件對象。

  • format -- 可選格式替代。如果省略,則使用的格式由文件擴(kuò)展名決定。如果使用的是文件對象而不是文件名,則應(yīng)始終使用此參數(shù)。

  • params -- 圖像編寫器的額外參數(shù)。

返回

None

引發(fā)
  • ?ValueError? -- 如果無法從文件名確定輸出格式。使用“格式”選項解決此問題。

  • ?OSError? -- 如果無法寫入文件。文件可能已創(chuàng)建,并且可能包含部分?jǐn)?shù)據(jù)。

?Image.seek(frame)?

查找此序列文件中的給定幀。如果在序列結(jié)尾之外查找,該方法將引發(fā) EOFError 例外。打開序列文件時,庫自動查找第0幀。

見 tell() .

參數(shù)

frame -- 幀編號,從0開始。

引發(fā)

?EOFError?-- 如果調(diào)用試圖在序列結(jié)束后查找。

?Image.show(title=Nonecommand=None)?

顯示此圖像。此方法主要用于調(diào)試目的。

該方法在?PIL.ImageShow.show()?內(nèi)部調(diào)用。您可以使用 ?PIL.ImageShow.register()?覆蓋其默認(rèn)行為。

圖像首先保存到一個臨時文件中。默認(rèn)情況下,它將采用 PNG 格式。

在 Unix 上,然后使用display、eog或 xv實用程序打開圖像,具體取決于可以找到的那個。

在 macOS 上,圖像是使用本機(jī)預(yù)覽應(yīng)用程序打開的。

在 Windows 上,圖像使用標(biāo)準(zhǔn)的 PNG 顯示實用程序打開。

參數(shù)

title -- 在可能的情況下,用于圖像窗口的可選標(biāo)題。

?Image.split()?

將此圖像拆分為單獨的波段。此方法從圖像返回單個圖像帶的元組。例如,分割一個“RGB”圖像將創(chuàng)建三個新圖像,每個新圖像包含一個原始波段(紅色、綠色、藍(lán)色)的副本。

如果你只需要一個波段, getchannel() 方法更方便快捷。

返回

包含波段的元組。

?Image.tell()?

返回當(dāng)前幀號。見 seek() 

返回

幀編號,從0開始。

?Image.thumbnail(sizeresample=3reducing_gap=2.0)?

將此圖像制作成縮略圖。此方法修改圖像以包含不大于給定大小的自身縮略圖版本。此方法計算適當(dāng)?shù)目s略圖大小以保留圖像的方面,調(diào)用 draft() 方法來配置文件讀取器(如果適用),并最終調(diào)整圖像的大小。

請注意,此函數(shù)會就地修改 Image 對象。如果還需要使用全分辨率圖像,請將此方法應(yīng)用于 一個copy() 的原始圖像。

參數(shù)
  • size -- 請求的大小。

  • resample -- 可選的重新采樣過濾器。這可能是 PIL.Image.NEAREST , PIL.Image.BILINEAR , PIL.Image.BICUBIC 或 PIL.Image.LANCZOS . 如果省略,則默認(rèn)為 PIL.Image.BICUBIC . 是 PIL.Image.NEAREST 2.5.0之前的版本)。

  • reducing_gap --  通過分兩步調(diào)整圖像大小來應(yīng)用優(yōu)化。首先,使用?reduce()?或 ?draft()?對于 JPEG 圖像將圖像縮小整數(shù)倍。其次,使用常規(guī)重采樣調(diào)整大小。最后一步改變大小不少于reducing_gap次。 reducing_gap可以是 ?None?(不執(zhí)行第一步)或應(yīng)該大于 1.0。reducing_gap越大,結(jié)果越接近公平重采樣。reducing_gap越小,調(diào)整大小越快。隨著reducing_gap大于或等于3.0,結(jié)果是公平的,從在大多數(shù)情況下重采樣難以區(qū)分。默認(rèn)值為 2.0(非常接近公平重采樣,但在許多情況下仍然更快)。

返回

None

?Image.tobitmap(name='image')?

返回轉(zhuǎn)換為x11位圖的圖像。

此方法僅適用于模式“1”圖像。

參數(shù)

name -- 用于位圖變量的名稱前綴。

返回

包含x11位圖的字符串。

引發(fā)

?ValueError? -- 如果模式不是“1”

?Image.tobytes(encoder_name='raw'*args)?

以字節(jié)對象的形式返回圖像。

此方法從內(nèi)部存儲器返回原始圖像數(shù)據(jù)。對于壓縮圖像數(shù)據(jù)(如PNG、JPEG),請使用? save() ?,內(nèi)存中的數(shù)據(jù)帶有一個?BytesIO?參數(shù)。

參數(shù)
  • encoder_name -- 使用什么編碼器。默認(rèn)使用標(biāo)準(zhǔn)的“原始”編碼器。

  • args -- 編碼器的額外參數(shù)。

返回類型

一個 ?bytes ?對象

Image.transform(sizemethoddata=Noneresample=0fill=1fillcolor=None)

轉(zhuǎn)換此圖像。此方法創(chuàng)建具有給定大小和與原始圖像相同模式的新圖像,并使用給定的轉(zhuǎn)換將數(shù)據(jù)復(fù)制到新圖像。

參數(shù)
  • size -- 輸出大小。

  • method -- 轉(zhuǎn)換方法。這是其中之一 PIL.Image.EXTENT (切出矩形子區(qū)域) PIL.Image.AFFINE (仿射變換) PIL.Image.PERSPECTIVE (透視變換) PIL.Image.QUAD (將四邊形映射到矩形),或 PIL.Image.MESH (在一個操作中映射多個源四邊形)。它也可能是一個?ImageTransformHandler? 對象:

    class Example(Image.ImageTransformHandler):
        def transform(self, size, data, resample, fill=1):
            # Return result

    它也可能是一個對象,其?method.getdata?方法返回一個提供 new?method?和?data?值的元組:

    class Example:
        def getdata(self):
            method = Image.EXTENT
            data = (0, 0, 100, 100)
            return method, data
  • data -- 轉(zhuǎn)換方法的額外數(shù)據(jù)。

  • resample -- 可選的重新采樣過濾器。它可以是 PIL.Image.NEAREST (使用最近鄰算法) PIL.Image.BILINEAR (2x2環(huán)境中的線性插值),或 PIL.Image.BICUBIC (4x4環(huán)境中的三次樣條插值)。如果省略,或者圖像具有模式“1”或“P”,則設(shè)置為 PIL.Image.NEAREST 。

  • fill -- 如果? method ?是一個 ImageTransformHandler 對象,這是傳遞給它的參數(shù)之一。否則,它是未使用的。

  • fillcolor -- 輸出圖像中轉(zhuǎn)換外部區(qū)域的可選填充顏色。

返回

一個Image 對象。

?Image.transpose(method)?

轉(zhuǎn)置圖像(以90度的步幅翻轉(zhuǎn)或旋轉(zhuǎn))

參數(shù)

method -- 其中一個 PIL.Image.FLIP_LEFT_RIGHT , PIL.Image.FLIP_TOP_BOTTOM , PIL.Image.ROTATE_90 , PIL.Image.ROTATE_180 , PIL.Image.ROTATE_270 , PIL.Image.TRANSPOSE 或 PIL.Image.TRANSVERSE 。

返回

返回此圖像的翻轉(zhuǎn)或旋轉(zhuǎn)副本。

這將使用FLIP_LEFT_RIGHT方法翻轉(zhuǎn)輸入圖像。

from PIL import Image

im = Image.open("hopper.jpg")

# Flip the image from left to right
im_flipped = im.transpose(method=Image.FLIP_LEFT_RIGHT)
# To flip the image from top to bottom,
# use the method "Image.FLIP_TOP_BOTTOM"
?Image.verify()?

驗證文件的內(nèi)容。對于從文件讀取的數(shù)據(jù),此方法嘗試確定文件是否已損壞,而不實際解碼圖像數(shù)據(jù)。如果此方法發(fā)現(xiàn)任何問題,則會引發(fā)適當(dāng)?shù)漠惓!H绻褂么朔椒ê笮枰虞d圖像,則必須重新打開圖像文件。

?Image.load()?

為圖像分配存儲空間并加載像素數(shù)據(jù)。在正常情況下,不需要調(diào)用此方法,因為當(dāng)首次訪問打開的圖像時,Image類會自動加載該圖像。

如果與圖像相關(guān)聯(lián)的文件是通過 Pillow 打開的,那么此方法將關(guān)閉它。例外情況是如果圖像有多個幀,在這種情況下,文件將保持打開狀態(tài)以進(jìn)行查找操作。

返回

一個圖像訪問對象。

返回類型

PixelAccess Class 或者 PIL.PyAccess

?Image.close()?

如果可能,關(guān)閉文件指針。

此操作將破壞圖像核心并釋放其內(nèi)存。之后圖像數(shù)據(jù)將無法使用。

此函數(shù)僅用于關(guān)閉未被 load() 方法。


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號