溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用Python 代碼批量壓縮500 張圖片

發布時間:2021-12-02 17:38:35 來源:億速云 閱讀:346 作者:柒染 欄目:大數據

如何用Python 代碼批量壓縮500 張圖片

在現代數字時代,圖片已經成為我們日常生活和工作中不可或缺的一部分。無論是社交媒體、網站設計,還是文檔處理,圖片都扮演著重要的角色。然而,高分辨率的圖片往往會占用大量的存儲空間,并且在網絡上傳輸時可能會導致加載速度變慢。因此,圖片壓縮成為了一項重要的技術,它可以在不顯著降低圖片質量的情況下,大幅減小圖片的文件大小。

本文將詳細介紹如何使用Python代碼批量壓縮500張圖片。我們將使用Python中的Pillow庫來實現這一功能。Pillow是Python Imaging Library(PIL)的一個分支,提供了豐富的圖像處理功能。

1. 安裝Pillow庫

在開始之前,我們需要確保已經安裝了Pillow庫。如果還沒有安裝,可以使用以下命令進行安裝:

pip install pillow

2. 導入必要的庫

在編寫代碼之前,我們需要導入一些必要的庫。除了Pillow庫之外,我們還需要使用os庫來處理文件路徑。

from PIL import Image
import os

3. 定義圖片壓縮函數

接下來,我們需要定義一個函數來壓縮單張圖片。這個函數將接受圖片的路徑、輸出路徑以及壓縮質量作為參數。

def compress_image(input_path, output_path, quality=85):
    """
    壓縮圖片并保存到指定路徑
    :param input_path: 輸入圖片路徑
    :param output_path: 輸出圖片路徑
    :param quality: 壓縮質量,范圍是1-95,默認值為85
    """
    try:
        # 打開圖片
        img = Image.open(input_path)
        # 保存壓縮后的圖片
        img.save(output_path, quality=quality)
        print(f"圖片已壓縮并保存到: {output_path}")
    except Exception as e:
        print(f"壓縮圖片時出錯: {e}")

4. 批量壓縮圖片

現在,我們已經有了壓縮單張圖片的函數,接下來我們需要編寫代碼來批量處理500張圖片。假設這些圖片都存儲在一個文件夾中,我們可以使用os庫來遍歷文件夾中的所有圖片文件。

def batch_compress_images(input_folder, output_folder, quality=85):
    """
    批量壓縮圖片
    :param input_folder: 輸入文件夾路徑
    :param output_folder: 輸出文件夾路徑
    :param quality: 壓縮質量,范圍是1-95,默認值為85
    """
    # 確保輸出文件夾存在
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    # 遍歷輸入文件夾中的所有文件
    for filename in os.listdir(input_folder):
        # 構建完整的文件路徑
        input_path = os.path.join(input_folder, filename)
        output_path = os.path.join(output_folder, filename)

        # 只處理圖片文件
        if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif', '.tiff')):
            compress_image(input_path, output_path, quality)
        else:
            print(f"跳過非圖片文件: {filename}")

5. 使用示例

假設我們有一個名為images的文件夾,里面存放了500張需要壓縮的圖片。我們希望將這些圖片壓縮后保存到compressed_images文件夾中。我們可以使用以下代碼來實現這一目標:

input_folder = 'images'
output_folder = 'compressed_images'
quality = 75  # 可以根據需要調整壓縮質量

batch_compress_images(input_folder, output_folder, quality)

6. 進一步優化

在實際應用中,我們可能需要對圖片進行更多的處理,例如調整圖片大小、轉換圖片格式等。Pillow庫提供了豐富的功能來滿足這些需求。以下是一些常見的操作示例:

6.1 調整圖片大小

def resize_image(input_path, output_path, size=(800, 600)):
    """
    調整圖片大小并保存到指定路徑
    :param input_path: 輸入圖片路徑
    :param output_path: 輸出圖片路徑
    :param size: 目標大小,格式為(寬度, 高度)
    """
    try:
        img = Image.open(input_path)
        img = img.resize(size, Image.ANTIALIAS)
        img.save(output_path)
        print(f"圖片已調整大小并保存到: {output_path}")
    except Exception as e:
        print(f"調整圖片大小時出錯: {e}")

6.2 轉換圖片格式

def convert_image_format(input_path, output_path, format='JPEG'):
    """
    轉換圖片格式并保存到指定路徑
    :param input_path: 輸入圖片路徑
    :param output_path: 輸出圖片路徑
    :param format: 目標格式,例如'JPEG', 'PNG'
    """
    try:
        img = Image.open(input_path)
        img.save(output_path, format=format)
        print(f"圖片已轉換格式并保存到: {output_path}")
    except Exception as e:
        print(f"轉換圖片格式時出錯: {e}")

6.3 批量處理圖片

我們可以將上述功能整合到一個函數中,以便在一次遍歷中完成多種操作。

def batch_process_images(input_folder, output_folder, quality=85, size=None, format=None):
    """
    批量處理圖片
    :param input_folder: 輸入文件夾路徑
    :param output_folder: 輸出文件夾路徑
    :param quality: 壓縮質量,范圍是1-95,默認值為85
    :param size: 目標大小,格式為(寬度, 高度),默認為None
    :param format: 目標格式,例如'JPEG', 'PNG',默認為None
    """
    # 確保輸出文件夾存在
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    # 遍歷輸入文件夾中的所有文件
    for filename in os.listdir(input_folder):
        # 構建完整的文件路徑
        input_path = os.path.join(input_folder, filename)
        output_path = os.path.join(output_folder, filename)

        # 只處理圖片文件
        if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif', '.tiff')):
            try:
                img = Image.open(input_path)
                # 調整大小
                if size:
                    img = img.resize(size, Image.ANTIALIAS)
                # 轉換格式
                if format:
                    output_path = os.path.splitext(output_path)[0] + '.' + format.lower()
                # 保存圖片
                img.save(output_path, quality=quality)
                print(f"圖片已處理并保存到: {output_path}")
            except Exception as e:
                print(f"處理圖片時出錯: {e}")
        else:
            print(f"跳過非圖片文件: {filename}")

7. 總結

通過本文的介紹,我們學習了如何使用Python代碼批量壓縮500張圖片。我們使用了Pillow庫來實現圖片的壓縮、調整大小和格式轉換等功能。這些技術不僅可以應用于圖片壓縮,還可以擴展到其他圖像處理任務中。

在實際應用中,我們可以根據具體需求對代碼進行進一步的優化和擴展。例如,我們可以添加更多的錯誤處理機制,或者將代碼封裝成一個獨立的工具類,以便在其他項目中復用。

希望本文對你有所幫助,祝你在Python圖像處理的學習和實踐中取得更多的成果!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女