import os from PIL import ImageFile, Image from ATRI.exceptions import WriteError def compress_image(out_file, kb=500, quality=85, k=0.9) -> str: """将目标图片进行压缩""" o_size = os.path.getsize(out_file) // 1024 if o_size <= kb: return out_file ImageFile.LOAD_TRUNCATED_IMAGES = True # type: ignore while o_size > kb: img = Image.open(out_file) x, y = img.size out = img.resize((int(x * k), int(y * k)), Image.ANTIALIAS) try: out.save(out_file, quality=quality) except WriteError: raise WriteError('Writing file failed!') o_size = os.path.getsize(out_file) // 1024 return out_file