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

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

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

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

PIL庫(Python Imaging Library)的Image.crop()方法是圖像處理的核心工具,通過定義四元組坐標(biāo)實(shí)現(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需大于left,lower需大于upper,否則觸發(fā)SystemError: tile cannot extend outside image

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

  1. 坐標(biāo)定位原理
    以384x384圖像中心裁剪256x256區(qū)域?yàn)槔?div id="wppm3vysvbp" class="jb51code">
    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)
    
  • 邊界處理邏輯
    當(dāng)裁剪區(qū)域超出圖像邊界時(shí),PIL會(huì)自動(dòng)截?cái)嘀劣行Х秶?。例如?duì)1920x1200圖像進(jìn)行左上角裁剪:
    # 合法裁剪范圍:left∈[0,1920], upper∈[0,1200]
    cropped = img.crop((0, 0, 3000, 800))  # 實(shí)際裁剪區(qū)域調(diào)整為(0,0,1920,800)
    
  • 三、典型應(yīng)用場(chǎng)景

    場(chǎ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')
    

    場(chǎng)景2:動(dòng)態(tài)坐標(biāo)計(jì)算
    通過元素定位實(shí)現(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%時(shí)需強(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. 高性能裁剪
      批量處理時(shí)建議使用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()配合透明蒙版實(shí)現(xiàn)
    • 坐標(biāo)系轉(zhuǎn)換:使用img.size動(dòng)態(tài)計(jì)算相對(duì)坐標(biāo)
    • Exif方向處理:自動(dòng)校正圖像旋轉(zhuǎn)方向
      if img.getexif().get(0x0112) in [3,6,8]:
          img = img.transpose(Image.ROTATE_90)
      

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

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

    相關(guān)文章

    最新評(píng)論

    翼城县| 吉水县| 郎溪县| 庆城县| 武川县| 元江| 安达市| 泗水县| 瓦房店市| 莲花县| 绵竹市| 达尔| 河池市| 清河县| 成安县| 奎屯市| 北宁市| 通州市| 华坪县| 东兴市| 临朐县| 全州县| 筠连县| 霸州市| 二连浩特市| 晋中市| 长丰县| 木兰县| 元江| 台江县| 荣昌县| 鹤峰县| 旬邑县| 玛沁县| 博野县| 乌苏市| 合作市| 嘉义市| 正蓝旗| 昂仁县| 巫山县|