python實現(xiàn)圖片壓縮代碼實例
前言
項目中大量用到圖片加載,由于圖片太大,加載速度很慢,因此需要對文件進行統(tǒng)一壓縮
一:導(dǎo)入包
from PIL import Image import os
二:獲取圖片文件的大小
def get_size(file): # 獲取文件大小:KB size = os.path.getsize(file) return size / 1024
三:拼接輸出文件地址
def get_outfile(infile, outfile): if outfile: return outfile dir, suffix = os.path.splitext(infile) outfile = '{}-out{}'.format(dir, suffix) return outfile
四:壓縮文件到指定大小,我期望的是150KB,step和quality可以修改到最合適的數(shù)值
def compress_image(infile, outfile='', mb=150, step=10, quality=80): """不改變圖片尺寸壓縮到指定大小 :param infile: 壓縮源文件 :param outfile: 壓縮文件保存地址 :param mb: 壓縮目標,KB :param step: 每次調(diào)整的壓縮比率 :param quality: 初始壓縮比率 :return: 壓縮文件地址,壓縮文件大小 """ o_size = get_size(infile) if o_size <= mb: return infile outfile = get_outfile(infile, 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) return outfile, get_size(outfile)
五:修改圖片尺寸,如果同時有修改尺寸和大小的需要,可以先修改尺寸,再壓縮大小
def resize_image(infile, outfile='', x_s=1376): """修改圖片尺寸 :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) outfile = get_outfile(infile, outfile) out.save(outfile) if __name__ == '__main__': compress_image(r'D:\learn\space.jpg') resize_image(r'D:\learn\space.jpg')
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于Python實現(xiàn)數(shù)字限制在指定范圍內(nèi)的五種方式
在編程中,數(shù)字范圍限制是常見需求,無論是游戲開發(fā)中的角色屬性值、金融計算中的利率調(diào)整,還是傳感器數(shù)據(jù)處理中的異常值過濾,都需要將數(shù)字控制在合理范圍內(nèi),Python提供了多種實現(xiàn)方式,每種方法各有優(yōu)劣,本文將通過實際案例,介紹五種主流方法及其適用場景2025-08-08python算法學(xué)習(xí)雙曲嵌入論文方法與代碼解析說明
這篇文章主要為大家介紹了python算法學(xué)習(xí)雙曲嵌入論文方法與代碼的實現(xiàn)解析說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11Django 實現(xiàn) Websocket 廣播、點對點發(fā)送消息的代碼
這篇文章主要介紹了Django 實現(xiàn) Websocket 廣播、點對點發(fā)送消息,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06解讀Tensorflow2.0訓(xùn)練損失值降低,但測試正確率基本不變的情況
這篇文章主要介紹了Tensorflow2.0訓(xùn)練損失值降低,但測試正確率基本不變的情況,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06Python流行ORM框架sqlalchemy安裝與使用教程
這篇文章主要介紹了Python流行ORM框架sqlalchemy安裝與使用,結(jié)合具體實例形式分析了sqlalchemy的安裝及ORM映射、查詢等相關(guān)操作技巧,需要的朋友可以參考下2019-06-06使用numpngw和matplotlib生成png動畫的示例代碼
這篇文章主要介紹了使用numpngw和matplotlib生成png動畫的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01