极客小将

您现在的位置是:首页 » python编程资讯

资讯内容

python中如何实现图片压缩

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

python实现图片压缩的方法:1、导入Image包;2、使用get_size(file)命令获取图片文件的大小;3、使用【os.path.splitext()】方式拼接文件地址;然后压缩文件到指定大小;4、修改图片尺寸即可。4ps少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

4ps少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

一、导入包4ps少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

from PIL import Image import os

二、获取图片文件的大小
4ps少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

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

三、拼接输出文件地址
4ps少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

def get_outfile(infile, outfile):         if outfile:                return outfile             dir, suffix = os.path.splitext(infile)    outfile = '{}-out{}'.format(dir, suffix)         return outfile

四、压缩文件到指定大小4ps少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

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)

五、修改图片尺寸4ps少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

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进阶视频教程4ps少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

网友点评

共有5条评论来说两句吧...