最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python的PIL對象crop函數(shù)的實現(xiàn)示例

 更新時間:2025年12月11日 11:16:43   作者:detayun  
PIL庫的Image.crop()方法用于矩形區(qū)域裁剪,通過定義四元組坐標(biāo)實現(xiàn),本文就來詳細(xì)的介紹一下如何使用,感興趣的可以了解一下

一、函數(shù)基礎(chǔ)解析

PIL庫(Python Imaging Library)的Image.crop()方法是圖像處理的核心工具,通過定義四元組坐標(biāo)實現(xiàn)矩形區(qū)域裁剪。函數(shù)簽名如下:

cropped_image = img.crop(box)

其中box=(left, upper, right, lower)為裁剪區(qū)域的邊界坐標(biāo):

  • 坐標(biāo)系統(tǒng):左上角為原點(diǎn)(0,0),向右為X軸正方向,向下為Y軸正方向
  • 參數(shù)規(guī)則:坐標(biāo)值必須為整數(shù),且right需大于leftlower需大于upper,否則觸發(fā)SystemError: tile cannot extend outside image

二、核心參數(shù)詳解

  1. 坐標(biāo)定位原理
    以384x384圖像中心裁剪256x256區(qū)域為例:
    center_x, center_y = img.size[0]//2, img.size[1]//2
    box = (center_x-128, center_y-128, center_x+128, center_y+128)
    
  2. 邊界處理邏輯
    當(dāng)裁剪區(qū)域超出圖像邊界時,PIL會自動截斷至有效范圍。例如對1920x1200圖像進(jìn)行左上角裁剪:
    # 合法裁剪范圍:left∈[0,1920], upper∈[0,1200]
    cropped = img.crop((0, 0, 3000, 800))  # 實際裁剪區(qū)域調(diào)整為(0,0,1920,800)
    

三、典型應(yīng)用場景

場景1:九宮格裁剪

from PIL import Image
img = Image.open('flower.jpg')
w, h = img.size
grid_w, grid_h = w//3, h//3

for i in range(3):
    for j in range(3):
        box = (i*grid_w, j*grid_h, (i+1)*grid_w, (j+1)*grid_h)
        region = img.crop(box)
        region.save(f'grid_{i}_{j}.png')

場景2:動態(tài)坐標(biāo)計算
通過元素定位實現(xiàn)精準(zhǔn)裁剪(如網(wǎng)頁截圖元素提?。?/p>

from selenium import webdriver
from PIL import Image

driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.save_screenshot('baidu.png')
element = driver.find_element_by_id('su')
location = element.location
size = element.size

img = Image.open('baidu.png')
cropped = img.crop((
    location['x'], 
    location['y'],
    location['x'] + size['width'],
    location['y'] + size['height']
))
cropped.save('button.png')

四、常見問題解決方案

  1. 坐標(biāo)偏移問題
    顯示比例非100%時需強(qiáng)制縮放:
    driver.execute_script('document.body.style.zoom="0.8"')
    
  2. 格式兼容問題
    TIFF格式建議改用OpenCV處理:
    import cv2
    img = cv2.imread('image.tif')
    cropped = img[100:300, 200:400]  # (y1:y2, x1:x2)
    cv2.imwrite('cropped.tif', cropped)
    
  3. 高性能裁剪
    批量處理時建議使用ImageChops優(yōu)化:
    from PIL import ImageChops
    mask = Image.new('L', img.size, 0)
    draw = ImageDraw.Draw(mask)
    draw.rectangle(box, fill=255)
    cropped = ImageChops.multiply(img, mask)
    

五、進(jìn)階技巧

  • 非矩形裁剪:通過Image.paste()配合透明蒙版實現(xiàn)
  • 坐標(biāo)系轉(zhuǎn)換:使用img.size動態(tài)計算相對坐標(biāo)
  • Exif方向處理:自動校正圖像旋轉(zhuǎn)方向
    if img.getexif().get(0x0112) in [3,6,8]:
        img = img.transpose(Image.ROTATE_90)
    

通過系統(tǒng)掌握crop()函數(shù)的參數(shù)特性與邊界處理邏輯,結(jié)合具體場景的坐標(biāo)計算方法,可高效完成從基礎(chǔ)裁剪到復(fù)雜圖像處理的各類任務(wù)。實踐建議從簡單矩形裁剪入手,逐步掌握動態(tài)坐標(biāo)計算、格式兼容處理等進(jìn)階技巧,最終實現(xiàn)專業(yè)級的圖像處理能力。

到此這篇關(guān)于Python的PIL對象crop函數(shù)的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)Python的PIL對象crop函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在Django框架中編寫Context處理器的方法

    在Django框架中編寫Context處理器的方法

    這篇文章主要介紹了在Django框架中編寫Context處理器的方法,Django是重多高人氣Python框架中最為著名的一個,需要的朋友可以參考下
    2015-07-07
  • python登錄并爬取淘寶信息代碼示例

    python登錄并爬取淘寶信息代碼示例

    這篇文章主要介紹了python 登錄并爬取淘寶信息代碼示例,具有一定借鑒價值,需要的朋友可以了解下。
    2017-12-12
  • python爬蟲學(xué)習(xí)筆記之pyquery模塊基本用法詳解

    python爬蟲學(xué)習(xí)筆記之pyquery模塊基本用法詳解

    這篇文章主要介紹了python爬蟲學(xué)習(xí)筆記之pyquery模塊基本用法,結(jié)合實例形式詳細(xì)分析了python爬蟲pyquery模塊基本功能、用法及操作注意事項,需要的朋友可以參考下
    2020-04-04
  • Python3視頻轉(zhuǎn)字符動畫的實例代碼

    Python3視頻轉(zhuǎn)字符動畫的實例代碼

    這篇文章主要介紹了Python3視頻轉(zhuǎn)字符動畫的實例代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • Python中json.load()與json.loads()方法有什么區(qū)別詳解

    Python中json.load()與json.loads()方法有什么區(qū)別詳解

    在讀取文件時解碼python的json格式,常用到j(luò)son.loads()與json.load(),下面這篇文章主要給大家介紹了關(guān)于Python中json.load()與json.loads()方法有什么區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • Python2中文處理紀(jì)要的實現(xiàn)方法

    Python2中文處理紀(jì)要的實現(xiàn)方法

    本篇文章主要介紹了Python2中文處理紀(jì)要的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Pytorch之8層神經(jīng)網(wǎng)絡(luò)實現(xiàn)Cifar-10圖像分類驗證集準(zhǔn)確率94.71%

    Pytorch之8層神經(jīng)網(wǎng)絡(luò)實現(xiàn)Cifar-10圖像分類驗證集準(zhǔn)確率94.71%

    這篇文章主要介紹了Pytorch之8層神經(jīng)網(wǎng)絡(luò)實現(xiàn)Cifar-10圖像分類驗證集準(zhǔn)確率94.71%問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • pygame游戲之旅 添加游戲界面按鍵圖形

    pygame游戲之旅 添加游戲界面按鍵圖形

    這篇文章主要為大家詳細(xì)介紹了pygame游戲之旅的第10篇,教大家如何添加游戲界面按鍵圖形,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Python線程編程之Thread詳解

    Python線程編程之Thread詳解

    這篇文章主要為大家介紹了Python線程編程之Thread,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • 利用Python如何生成hash值示例詳解

    利用Python如何生成hash值示例詳解

    這篇文章主要給大家介紹了關(guān)于利用Python如何生成hash值的相關(guān)資料,并且給大家分享了利用Python一句話校驗軟件哈希值的方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12

最新評論

太湖县| 怀柔区| 晋城| 霸州市| 中方县| 海晏县| 常熟市| 高尔夫| 岑溪市| 黎川县| 江孜县| 南昌县| 顺平县| 宜黄县| 大姚县| 潍坊市| 宁强县| 黄山市| 桂东县| 托克托县| 永修县| 弥勒县| 玉山县| 巫溪县| 榆中县| 天镇县| 理塘县| 克东县| 阳山县| 甘德县| 天祝| 神池县| 林甸县| 德钦县| 彰化市| 吉林市| 阜阳市| 宿迁市| 花莲县| 中西区| 吐鲁番市|