python3 压缩图片到合理范围
  iVwMSWHBbZ8g 2023年11月02日 36 0



import os
from PIL import Image
from PIL import ImageFile
import imghdr

def compress_image(outfile, mb=200, quality=85, k=0.9): # 修改mb大小,就是想要设定的压缩后的大小。
"""不改变图片尺寸压缩到指定大小
:param outfile: 压缩文件保存地址
:param mb: 压缩目标,KB
:param k: 每次调整的压缩比率
:param quality: 初始压缩比率
:return: 压缩文件地址,压缩文件大小
"""
o_size = os.path.getsize(outfile) // 1024  # 函数返回为字节,除1024转为kb(1kb = 1024 bit)
print('before_size:{} after_size:{}'.format(o_size, mb))
if o_size <= mb:
    return outfile

ImageFile.LOAD_TRUNCATED_IMAGES = True  # 防止图像被截断而报错

while o_size > mb:
    im = Image.open(outfile)
    x, y = im.size
    out = im.resize((int(x*k), int(y*k)), Image.ANTIALIAS)  # 最后一个参数设置可以提高图片转换后的质量
    try:
        out.save(outfile, quality=quality)  # quality为保存的质量,从1(最差)到95(最好),此时为85
    except Exception as e:
        print(e)
        break
    o_size = os.path.getsize(outfile) // 1024
 return outfile
def file_name(file_dir):
  for home,dirs,files in os.walk(file_dir):
    for filename in files:
      fullname = os.path.join(home,filename)
      imgType_list = {'jpg','bmp','png','jpeg','rgb','tif'}
      if imghdr.what(fullname) in imgType_list:
        compress_image(str(fullname))
file_name('/opt/tomcat_8580/webapps/file/upload/')


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  P3nxyT0LRuwj   2023年11月19日   35   0   0 linuxtomcat数据库
  bYdMetjCLs2g   2023年11月19日   21   0   0 tomcatjava
  xwGmYGXf1w4S   2023年11月24日   30   0   0 nginxtomcat
  xwGmYGXf1w4S   2023年11月22日   39   0   0 tomcatjavaApache