一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Python自動(dòng)化圖片處理:解放你的重復(fù)勞動(dòng)

 新用戶62592529 2024-12-03

Python自動(dòng)化圖片處理:解放你的重復(fù)勞動(dòng)

天天處理圖片煩不煩?改個(gè)尺寸要點(diǎn)一百次,重命名要手動(dòng)改半天,壓縮圖片更是折磨人。今兒給大伙兒介紹個(gè)省心利器 —— 用 Python 來(lái)解放你的雙手!

先把'兵器'準(zhǔn)備好

咱們這次主要用這幾個(gè)庫(kù),安裝很簡(jiǎn)單:

pip install Pillow
pip install pathlib

溫馨提示:用 pathlib 處理文件路徑比傳統(tǒng)的 os 模塊優(yōu)雅多了,用了就知道!

批量重命名:告別手動(dòng)改名時(shí)代

還在手動(dòng)改名字?太土了!看看這招:

from pathlib import Path

def batch_rename(folder_path, prefix='IMG_'):
    # 創(chuàng)建目錄對(duì)象
    folder = Path(folder_path)
    
    # 遍歷所有圖片文件
    for idx, img_path in enumerate(folder.glob('*.jpg')):
        # 新名字:前綴 + 序號(hào),例如:IMG_001.jpg
        new_name = f'{prefix}{idx:03d}{img_path.suffix}'
        # 重命名
        img_path.rename(folder / new_name)
        print(f'已重命名: {img_path.name} -> {new_name}')

# 使用示例
batch_rename('我的照片集')

這下不管多少?gòu)垐D片,秒秒鐘的事!

批量調(diào)整尺寸:一鍵處理百?gòu)垐D

領(lǐng)導(dǎo)說(shuō)圖片太大傳不上去?來(lái),一招解決:

from PIL import Image
from pathlib import Path

def resize_images(folder_path, max_size=800):
    folder = Path(folder_path)
    # 創(chuàng)建輸出文件夾
    output_folder = folder / '已調(diào)整'
    output_folder.mkdir(exist_ok=True)
    
    for img_path in folder.glob('*.jpg'):
        # 打開(kāi)圖片
        with Image.open(img_path) as img:
            # 計(jì)算新尺寸,保持比例
            ratio = max_size / max(img.size)
            if ratio < 1:  # 只縮小,不放大
                new_size = tuple(int(x * ratio) for x in img.size)
                # 調(diào)整大小并保存
                img_resized = img.resize(new_size, Image.Resampling.LANCZOS)
                save_path = output_folder / img_path.name
                img_resized.save(save_path, quality=95)
                print(f'已處理: {img_path.name}')

# 使用示例
resize_images('度假照片')

圖片壓縮:讓文件小下來(lái)

微信朋友圈發(fā)圖片總提示太大?這波操作安排上:

from PIL import Image
from pathlib import Path

def compress_images(folder_path, quality=80):
    folder = Path(folder_path)
    # 創(chuàng)建壓縮后的文件夾
    compressed_folder = folder / '已壓縮'
    compressed_folder.mkdir(exist_ok=True)
    
    for img_path in folder.glob('*.jpg'):
        # 打開(kāi)并壓縮
        with Image.open(img_path) as img:
            save_path = compressed_folder / img_path.name
            # 壓縮保存
            img.save(save_path, 'JPEG', quality=quality, optimize=True)
            
            # 顯示壓縮效果
            original_size = img_path.stat().st_size / 1024  # KB
            compressed_size = save_path.stat().st_size / 1024  # KB
            ratio = (1 - compressed_size/original_size) * 100
            print(f'{img_path.name}{original_size:.1f}KB -> {compressed_size:.1f}KB '
                  f'(節(jié)省{ratio:.1f}%)')

# 使用示例
compress_images('手機(jī)相冊(cè)')

終極大招:文件分類(lèi)整理器

照片太多整理不過(guò)來(lái)?這個(gè)神器幫你自動(dòng)分類(lèi):

from PIL import Image
from pathlib import Path
from datetime import datetime

def organize_photos(folder_path):
    folder = Path(folder_path)
    
    # 遍歷所有圖片
    for img_path in folder.glob('*.jpg'):
        try:
            # 獲取照片拍攝時(shí)間
            with Image.open(img_path) as img:
                if hasattr(img, '_getexif'and img._getexif():
                    exif = img._getexif()
                    if 36867 in exif:  # 拍攝時(shí)間的EXIF標(biāo)簽
                        date_str = exif[36867]
                        date_obj = datetime.strptime(date_str, '%Y:%m:%d %H:%M:%S')
                        # 按年月建文件夾
                        year_month = date_obj.strftime('%Y-%m')
                        new_folder = folder / year_month
                        new_folder.mkdir(exist_ok=True)
                        # 移動(dòng)文件
                        img_path.rename(new_folder / img_path.name)
                        print(f'已移動(dòng) {img_path.name} 到 {year_month}')
                    
        except Exception as e:
            print(f'處理 {img_path.name} 時(shí)出錯(cuò): {e}')

# 使用示例
organize_photos('所有照片')

全家桶:一鍵處理所有操作

想一次性搞定所有操作?給你準(zhǔn)備了個(gè)全家桶:

def photo_processor(folder_path):
    print('?? 開(kāi)始處理圖片...')
    
    # 先整理分類(lèi)
    print('\n?? 正在整理照片...')
    organize_photos(folder_path)
    
    # 統(tǒng)一調(diào)整大小
    print('\n?? 正在調(diào)整尺寸...')
    resize_images(folder_path)
    
    # 最后壓縮
    print('\n??? 正在壓縮圖片...')
    compress_images(folder_path)
    
    print('\n? 所有操作已完成!')

# 一鍵啟動(dòng)
photo_processor('我的相冊(cè)')

小貼士

  • 處理之前最好先備份,萬(wàn)一寫(xiě)錯(cuò)代碼把照片搞沒(méi)了多尷尬
  • 壓縮質(zhì)量建議設(shè)在 75-85 之間,再低圖片就糊了
  • 批量處理時(shí)注意看看內(nèi)存夠不夠,文件太多的話最好分批處理
  • 可以把這些代碼保存成腳本,需要時(shí)隨時(shí)調(diào)用

結(jié)語(yǔ)

這些自動(dòng)化操作可能剛開(kāi)始用著別扭,但只要習(xí)慣了,保證你再也不想手動(dòng)處理圖片!要是覺(jué)得這些代碼還不夠用,咱下次再聊聊更高級(jí)的玩法,比如圖片智能裁剪、添加水印、自動(dòng)美化等操作~

如果這篇文章對(duì)你有幫助,別忘了點(diǎn)個(gè)贊!有問(wèn)題也可以留言討論,咱們一起進(jìn)步!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    国产传媒欧美日韩成人精品| 亚洲av又爽又色又色| 国产成人高清精品尤物| 尤物久久91欧美人禽亚洲| 日本二区三区在线播放| 国产精品欧美日韩中文字幕| 亚洲妇女黄色三级视频| 千仞雪下面好爽好紧好湿全文| 国产熟女高清一区二区| 亚洲专区一区中文字幕| 99精品人妻少妇一区二区人人妻 | 中文字幕一区二区久久综合| 99视频精品免费视频| 国产欧美一区二区久久| 中文字幕有码视频熟女| 日本99精品在线观看| 成人午夜视频在线播放| 厕所偷拍一区二区三区视频| 国产精品香蕉一级免费| 日本婷婷色大香蕉视频在线观看| 99久久婷婷国产亚洲综合精品| 东京热加勒比一区二区| 欧美人妻少妇精品久久性色| 日韩av生活片一区二区三区| 国产亚洲神马午夜福利| 千仞雪下面好爽好紧好湿全文| 少妇特黄av一区二区三区| 国产农村妇女成人精品| 自拍偷女厕所拍偷区亚洲综合| 精品日韩国产高清毛片| 欧美性猛交内射老熟妇| 后入美臀少妇一区二区| 精品国产品国语在线不卡| 中文字幕乱码一区二区三区四区| 午夜福利视频六七十路熟女| 国产又粗又猛又爽又黄| 人妻中文一区二区三区| 国产一区日韩二区欧美| 欧美区一区二在线播放| 午夜福利视频日本一区| 激情五月激情婷婷丁香|