主頁(yè) > 知識(shí)庫(kù) > python實(shí)現(xiàn)圖片批量壓縮

python實(shí)現(xiàn)圖片批量壓縮

熱門(mén)標(biāo)簽:浙江電銷(xiāo)卡外呼系統(tǒng)好用嗎 315電話機(jī)器人廣告 房產(chǎn)電銷(xiāo)外呼系統(tǒng) 南京銷(xiāo)售外呼系統(tǒng)軟件 地圖標(biāo)注的意義點(diǎn) 上海機(jī)器人外呼系統(tǒng)哪家好 蓋州市地圖標(biāo)注 地圖標(biāo)注微信發(fā)送位置不顯示 地圖制圖標(biāo)注位置改變是移位嗎

項(xiàng)目中大量用到圖片加載,由于圖片太大,加載速度很慢,因此需要對(duì)文件進(jìn)行統(tǒng)一壓縮

第一種

 一:安裝包

python -m pip install Pillow

二:導(dǎo)入包

from PIL import Image
import os

三:獲取圖片文件的大小

def get_size(file):
    # 獲取文件大小:KB
    size = os.path.getsize(file)
    return size / 1024

四:輸出文件夾下的文件

dir_path = r'file_path'
items = os.listdir(dir_path)

for item in items:
    # print(item)
    path = os.path.join(dir_path, item)
    print(item)

五:壓縮文件到指定大小,我期望的是150KB,step和quality可以修改到最合適的數(shù)值

def compress_image(infile, outfile=None, mb=150, step=10, quality=80):
    """不改變圖片尺寸壓縮到指定大小
    :param infile: 壓縮源文件
    :param outfile: 壓縮文件保存地址
    :param mb: 壓縮目標(biāo),KB
    :param step: 每次調(diào)整的壓縮比率
    :param quality: 初始?jí)嚎s比率
    :return: 壓縮文件地址,壓縮文件大小
    """
    if outfile is None:
        outfile = infile
    o_size = get_size(infile)
    if o_size = mb:
        im = Image.open(infile)
        im.save(outfile)

    while o_size > mb:
        im = Image.open(infile)
        im.save(outfile, quality=quality)
        if quality - step  0:
            break
        quality -= step
        o_size = get_size(outfile)

六:修改圖片尺寸,如果同時(shí)有修改尺寸和大小的需要,可以先修改尺寸,再壓縮大小

def resize_image(infile, outfile='', x_s=800):
    """修改圖片尺寸
    :param infile: 圖片源文件
    :param outfile: 重設(shè)尺寸文件保存地址
    :param x_s: 設(shè)置的寬度
    :return:
    """
    im = Image.open(infile)
    x, y = im.size
    y_s = int(y * x_s / x)
    out = im.resize((x_s, y_s), Image.ANTIALIAS)

    out.save(outfile)

七:運(yùn)行程序

if __name__ == '__main__':
                      # 源路徑      # 壓縮后路徑
    compress_image(r"file_path", r"E:\docs\2.JPG")
                    # 源路徑      # 壓縮后路徑
    resize_image(r"file_path", r"E:\docs\3.JPG")

第二種

import os
from PIL import Image
import threading,time

def imgToProgressive(path):
    if not path.split('.')[-1:][0] in ['png','jpg','jpeg']:  #if path isn't a image file,return
        return
    if os.path.isdir(path):
        return
##########transform img to progressive
    img = Image.open(path)
    destination = path.split('.')[:-1][0]+'_destination.'+path.split('.')[-1:][0]
    try:
        print(path.split('\\')[-1:][0],'開(kāi)始轉(zhuǎn)換圖片')
        img.save(destination, "JPEG", quality=80, optimize=True, progressive=True) #轉(zhuǎn)換就是直接另存為
        print(path.split('\\')[-1:][0],'轉(zhuǎn)換完畢')
    except IOError:
        PIL.ImageFile.MAXBLOCK = img.size[0] * img.size[1]
        img.save(destination, "JPEG", quality=80, optimize=True, progressive=True)
        print(path.split('\\')[-1:][0],'轉(zhuǎn)換完畢')
    print('開(kāi)始重命名文件')
    os.remove(path)
    os.rename(destination,path)

for d,_,fl in os.walk(os.getcwd()):    #遍歷目錄下所有文件
    for f in fl:
        try:
            imgToProgressive(d+'\\'+f)
        except:
            pass

以上就是python實(shí)現(xiàn)圖片批量壓縮的詳細(xì)內(nèi)容,更多關(guān)于python 圖片壓縮的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • python 實(shí)現(xiàn)圖片批量壓縮的示例
  • python 無(wú)損批量壓縮圖片(支持保留圖片信息)的示例
  • python如何實(shí)現(xiàn)圖片壓縮
  • Python無(wú)損壓縮圖片的示例代碼
  • python3 圖片 4通道轉(zhuǎn)成3通道 1通道轉(zhuǎn)成3通道 圖片壓縮實(shí)例
  • python實(shí)現(xiàn)圖片壓縮代碼實(shí)例
  • python實(shí)現(xiàn)圖片批量壓縮程序
  • Python實(shí)現(xiàn)批量壓縮圖片
  • python中學(xué)習(xí)K-Means和圖片壓縮
  • python利用Guetzli批量壓縮圖片
  • 在Python中使用pngquant壓縮png圖片的教程
  • python 批量壓縮圖片的腳本

標(biāo)簽:陽(yáng)泉 臨汾 貴州 金華 雙鴨山 日照 赤峰 克拉瑪依

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python實(shí)現(xiàn)圖片批量壓縮》,本文關(guān)鍵詞  python,實(shí)現(xiàn),圖片,批量,壓縮,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python實(shí)現(xiàn)圖片批量壓縮》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于python實(shí)現(xiàn)圖片批量壓縮的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章