Pillow 剪切、粘貼和合并圖像

2021-07-06 11:35 更新

這個(gè) ?Image? 類包含允許您操作圖像中區(qū)域的方法。要從圖像中提取子矩形,請(qǐng)使用 ?crop() ?方法。

從圖像復(fù)制子矩形

box = (100, 100, 400, 400)
region = im.crop(box)

區(qū)域由四元組定義,其中坐標(biāo)為(左、上、右、下)。python圖像庫(kù)使用左上角帶有(0,0)的坐標(biāo)系。還要注意,坐標(biāo)是指像素之間的位置,因此上面示例中的區(qū)域正好是300x300像素。

該區(qū)域現(xiàn)在可以以某種方式進(jìn)行處理并粘貼回去。

處理子矩形,然后粘貼回去

region = region.transpose(Image.ROTATE_180)
im.paste(region, box)

粘貼區(qū)域時(shí),區(qū)域的大小必須與給定區(qū)域完全匹配。此外,區(qū)域不能延伸到圖像之外。但是,原始圖像和區(qū)域的模式不需要匹配。如果沒有,則在粘貼之前區(qū)域?qū)⒆詣?dòng)轉(zhuǎn)換(請(qǐng)參見 顏色空間變換 詳情見下文)。

下面是一個(gè)附加示例:

滾動(dòng)圖像

def roll(image, delta):
    """Roll an image sideways."""
    xsize, ysize = image.size

    delta = delta % xsize
    if delta == 0: return image

    part1 = image.crop((0, 0, delta, ysize))
    part2 = image.crop((delta, 0, xsize, ysize))
    image.paste(part1, (xsize-delta, 0, xsize, ysize))
    image.paste(part2, (0, 0, xsize-delta, ysize))

    return image

對(duì)于更高級(jí)的技巧,粘貼方法還可以將透明蒙版作為可選參數(shù)。在此遮罩中,值255表示粘貼的圖像在該位置是不透明的(即,粘貼的圖像應(yīng)按原樣使用)。值0表示粘貼的圖像完全透明。中間的值表示不同的透明度級(jí)別。例如,粘貼rgba圖像并將其用作遮罩將粘貼圖像的不透明部分,但不會(huì)粘貼其透明背景。

python圖像庫(kù)還允許您使用多波段圖像的各個(gè)波段,例如RGB圖像。split方法創(chuàng)建一組新圖像,每個(gè)新圖像包含原始多波段圖像的一個(gè)波段。merge函數(shù)接受一個(gè)模式和一組圖像,并將它們組合成一個(gè)新圖像。以下示例交換RGB圖像的三個(gè)波段:

拆分和合并波段

r, g, b = im.split()
im = Image.merge("RGB", (b, g, r))

注意對(duì)于單波段圖像,? split()? 返回圖像本身。要使用單獨(dú)的色帶,您可能需要先將圖像轉(zhuǎn)換為“RGB”。

 這里的波段可以理解為ps中的rgb通道。


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)