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

基于Python實現(xiàn)一個圖片壓縮工具

 更新時間:2024年01月29日 08:29:47   作者:Sitin濤哥  
圖片壓縮是在保持圖像質(zhì)量的同時減小圖像文件大小的過程,本文將學習如何使用Python來實現(xiàn)一個簡單但功能強大的圖片壓縮工具,以及如何在不同情境下進行圖片壓縮,希望對大家有所幫助

圖片壓縮是在保持圖像質(zhì)量的同時減小圖像文件大小的過程。這在網(wǎng)絡(luò)應(yīng)用、移動應(yīng)用和網(wǎng)頁設(shè)計中非常有用,因為它可以減少加載時間和存儲空間占用。在本文中,將學習如何使用Python來實現(xiàn)一個簡單但功能強大的圖片壓縮工具,以及如何在不同情境下進行圖片壓縮。

安裝必要的庫

在開始之前,需要安裝兩個Python庫:Pillow和tqdm。Pillow是一個強大的圖像處理庫,而tqdm用于顯示壓縮進度。

可以使用以下命令來安裝這兩個庫:

pip install Pillow tqdm

基本的圖片壓縮

首先,將學習如何實現(xiàn)一個基本的圖片壓縮工具,該工具將圖像的質(zhì)量減小為指定的百分比。將使用Pillow庫來執(zhí)行圖像處理操作。

以下是一個簡單的圖片壓縮函數(shù):

from PIL import Image
import os

def compress_image(input_path, output_path, quality=80):
    """
    壓縮圖片的函數(shù)

    :param input_path: 輸入圖片文件路徑
    :param output_path: 輸出圖片文件路徑
    :param quality: 圖片質(zhì)量(0-100),默認為80
    """
    try:
        # 打開輸入圖片
        with Image.open(input_path) as img:
            # 保存為輸出圖片(JPG格式),設(shè)置質(zhì)量
            img.save(output_path, "JPEG", quality=quality)
        return True
    except Exception as e:
        print(f"壓縮圖片時出錯:{e}")
        return False

# 示例用法
input_image = "input.jpg"
output_image = "output.jpg"
compress_image(input_image, output_image, quality=60)

在這個函數(shù)中,首先使用Pillow庫的Image.open方法打開輸入圖片。然后,使用Image.save方法將圖像保存為JPG格式,并設(shè)置圖像質(zhì)量。較低的質(zhì)量值會導(dǎo)致更大的壓縮比。

批量圖片壓縮

通常,需要批量處理多個圖片文件。

以下是一個示例代碼,演示如何批量壓縮多個圖片文件:

from PIL import Image
import os
from tqdm import tqdm

def batch_compress_images(input_folder, output_folder, quality=80):
    """
    批量壓縮圖片的函數(shù)

    :param input_folder: 輸入圖片文件夾路徑
    :param output_folder: 輸出圖片文件夾路徑
    :param quality: 圖片質(zhì)量(0-100),默認為80
    """
    # 創(chuàng)建輸出文件夾
    os.makedirs(output_folder, exist_ok=True)
    
    # 獲取輸入文件夾中的所有圖片文件
    image_files = [f for f in os.listdir(input_folder) if f.endswith(('.jpg', '.jpeg', '.png', '.gif', '.bmp'))]
    
    for image_file in tqdm(image_files, desc="壓縮進度"):
        try:
            input_path = os.path.join(input_folder, image_file)
            output_path = os.path.join(output_folder, image_file)
            
            # 壓縮圖片
            compress_image(input_path, output_path, quality)
        except Exception as e:
            print(f"處理圖片 {image_file} 時出錯:{e}")

# 示例用法
input_folder = "input_images"
output_folder = "output_images"
batch_compress_images(input_folder, output_folder, quality=60)

這個函數(shù)接受輸入圖片文件夾路徑和輸出圖片文件夾路徑,并遍歷輸入文件夾中的所有圖片文件,對每個文件進行壓縮并保存到輸出文件夾中。使用tqdm庫來顯示壓縮進度。

自動選擇壓縮質(zhì)量

有時,可能希望自動選擇壓縮質(zhì)量,以便在指定文件大小內(nèi)獲得最佳的圖像質(zhì)量。

以下是一個示例代碼,演示如何實現(xiàn)自動選擇壓縮質(zhì)量的功能:

from PIL import Image
import os
from tqdm import tqdm

def auto_compress_images(input_folder, output_folder, target_size_kb):
    """
    自動選擇壓縮質(zhì)量以達到目標文件大小的函數(shù)

    :param input_folder: 輸入圖片文件夾路徑
    :param output_folder: 輸出圖片文件夾路徑
    :param target_size_kb: 目標文件大?。↘B)
    """
    # 創(chuàng)建輸出文件夾
    os.makedirs(output_folder, exist_ok=True)
    
    # 獲取輸入文件夾中的所有圖片文件
    image_files = [f for f in os.listdir(input_folder) if f.endswith(('.jpg', '.jpeg', '.png', '.gif', '.bmp'))]
    
    for image_file in tqdm(image_files, desc="壓縮進度"):
        try:
            input_path = os.path.join(input_folder, image_file)
            output_path = os.path.join(output_folder, image_file)
            
            # 初始化質(zhì)量
            quality = 80  # 初始質(zhì)量設(shè)為80
            
            while os.path.getsize(input_path) > target_size_kb * 1024:
                # 壓縮圖片并保存到臨時文件
                temp_output_path = os.path.join(output_folder, "temp.jpg")
                compress_image(input_path, temp_output_path, quality)
                
                # 用臨時文件替換原始文件
                os.replace(temp_output_path, input_path)
                
                # 減小質(zhì)量以進一步壓縮
                quality -= 10
                if quality < 10:
                    break
        except Exception as e:
            print(f"處理圖片 {image_file} 時出錯:{e}")

# 示例用法
input_folder = "input_images"
output_folder = "output_images_auto"
target_size_kb = 100  # 目標文件大?。↘B)
auto_compress_images(input_folder, output_folder, target_size_kb)

這個函數(shù)根據(jù)目標文件大小自動選擇壓縮質(zhì)量,以便在不超過指定大小的情況下獲得最佳的圖像質(zhì)量。它會不斷嘗試降低質(zhì)量,直到圖像大小小于或等于目標大小為止。

總結(jié)

通過本文,學習了如何使用Python和Pillow庫來實現(xiàn)圖片壓縮工具。涵蓋了基本的圖片壓縮、批量圖片壓縮和自動選擇壓縮質(zhì)量等不同情境下的圖片壓縮方法。這個工具可以幫助大家在不同項目中處理圖片,并根據(jù)需要進行壓縮,以便在減小文件大小的同時保持圖像質(zhì)量。希望這些示例代碼能幫助大家更好地理解和應(yīng)用圖片壓縮技術(shù)。

以上就是基于Python實現(xiàn)一個圖片壓縮工具的詳細內(nèi)容,更多關(guān)于Python圖片壓縮工具的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python使用pyenv實現(xiàn)多環(huán)境管理

    Python使用pyenv實現(xiàn)多環(huán)境管理

    這篇文章主要介紹了Python使用pyenv實現(xiàn)多環(huán)境管理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • python文本數(shù)據(jù)處理學習筆記詳解

    python文本數(shù)據(jù)處理學習筆記詳解

    這篇文章主要為大家詳細介紹了python文本數(shù)據(jù)處理學習筆記,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Python進行有限元仿真的使用及創(chuàng)建

    Python進行有限元仿真的使用及創(chuàng)建

    這篇文章主要為大家介紹了Python進行有限元仿真的創(chuàng)建及使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • Python超簡單分析評論提取關(guān)鍵詞制作精美詞云流程

    Python超簡單分析評論提取關(guān)鍵詞制作精美詞云流程

    這篇文章主要介紹了使用Python來分析評論并且提取其中的關(guān)鍵詞,用于制作精美詞云的方法,感興趣的朋友來看看吧
    2022-03-03
  • python 計算兩個列表的相關(guān)系數(shù)的實現(xiàn)

    python 計算兩個列表的相關(guān)系數(shù)的實現(xiàn)

    這篇文章主要介紹了python 計算兩個列表的相關(guān)系數(shù)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • 基于Python爬蟲采集天氣網(wǎng)實時信息

    基于Python爬蟲采集天氣網(wǎng)實時信息

    這篇文章主要介紹了基于Python爬蟲采集天氣網(wǎng)實時信息,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • 在PyCharm中將命令打包生成exe文件的兩種方式

    在PyCharm中將命令打包生成exe文件的兩種方式

    在 PyCharm 中打包 Python 文件,最常用、最可靠的方法是結(jié)合使用 PyInstaller 工具,下面我會介紹兩種在 PyCharm 中操作的方式,并重點說明如何確保依賴項和可能的數(shù)據(jù)文件被正確包含,需要的朋友可以參考下
    2026-03-03
  • Python3基礎(chǔ)語法知識點總結(jié)

    Python3基礎(chǔ)語法知識點總結(jié)

    在本篇文章里小編給大家分享的是一篇關(guān)于Python3基礎(chǔ)語法知識點總結(jié)內(nèi)容,有興趣的朋友們可以學習下。
    2021-05-05
  • Django 實現(xiàn)圖片上傳和下載功能

    Django 實現(xiàn)圖片上傳和下載功能

    這篇文章主要介紹了Django 如何實現(xiàn)圖片上傳和下載功能,幫助大家更好的理解和使用django框架,感興趣的朋友可以了解下
    2020-12-12
  • Pytorch使用VGG16模型進行預(yù)測貓狗二分類實戰(zhàn)

    Pytorch使用VGG16模型進行預(yù)測貓狗二分類實戰(zhàn)

    VGG16是Visual Geometry Group的縮寫,它的名字來源于提出該網(wǎng)絡(luò)的實驗室,本文我們將使用PyTorch來實現(xiàn)VGG16網(wǎng)絡(luò),用于貓狗預(yù)測的二分類任務(wù),我們將對VGG16的網(wǎng)絡(luò)結(jié)構(gòu)進行適當?shù)男薷?以適應(yīng)我們的任務(wù),需要的朋友可以參考下
    2023-08-08

最新評論

龙里县| 汾阳市| 邢台县| 商河县| 剑阁县| 苍溪县| 高唐县| 新安县| 开化县| 大同市| 陵川县| 玉溪市| 嵊州市| 广德县| 延寿县| 琼结县| 利川市| 衢州市| 绥德县| 九江县| 二连浩特市| 仙游县| 永胜县| 遂平县| 吐鲁番市| 昌都县| 湘潭市| 昌江| 平南县| 蛟河市| 茶陵县| 大丰市| 布拖县| 城步| 蒙城县| 教育| 逊克县| 锦屏县| 馆陶县| 凌源市| 康平县|