python中如何实现图片压缩[python高级教程]

python实现图片压缩的方法:1、导入Image包;2、使用get_size(file)命令获取图片文件的大小;3、使用【os.path.splitext()】方式拼接文件地址;然后压缩文件到指定大小;4、修改图片尺寸即可。

一、导入包

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

四、压缩文件到指定大小

def compress_image(infile, outfile='', mb=150, step=10, quality=80):   

      """不改变图片尺寸压缩到指定大小        

      :param infile: 压缩源文件        

      :param outfile: 压缩文件保存地址        

      :param mb: 压缩目标,KB        

      :param step: 每次调整的压缩比率        

      :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: 重设尺寸文件保存地址       

      :param x_s: 设置的宽度       

      :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:learnspace.jpg')      

    resize_image(r'D:learnspace.jpg')

推荐课程:Python进阶视频教程

以上是 python中如何实现图片压缩[python高级教程] 的全部内容, 来源链接: utcz.com/z/540463.html

回到顶部