首页 > 编程语言 >python3 压缩图片到合理范围

python3 压缩图片到合理范围

时间:2023-08-02 15:32:11浏览次数:33  
标签:mb quality 压缩 outfile file 图片 os python3 size



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/')


标签:mb,quality,压缩,outfile,file,图片,os,python3,size
From: https://blog.51cto.com/u_16056808/6938985

相关文章

  • tar.zx格式的解压和压缩方式
    由于xz文件格式的压缩率更高,已在Linux各发行版中广泛使用。最典型的就是Linux内核,3.12版本的xz压缩包仅72.85MB,解压后能达到518.77MB。XZUtils的为:tukaani.org/xz/那么,如何创建和解压.xz格式文件呢?以解压linux-3.12.tar.xz为例,解压xz格式文件方法一:需要用到两步命......
  • 直播app开发,页面顶部图片延伸到状态栏
    直播app开发,页面顶部图片延伸到状态栏 if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP){     //5.0全透明实现  //getWindow.setStatusBarColor(Color.TRANSPARENT)  Windowwindow=getWindow();  window.clearFlags(WindowManager.Layou......
  • python3 install 其他包 报:ModuleNotFoundError: No module named '_ctypes' 的问题
    python3install其他包报:ModuleNotFoundError:Nomodulenamed'_ctypes'的问题python2import_ctypes没有问题python3import_ctypes报上述错误,说明_ctypes确实无法导入。据网上资料显示时没有安装libdiff库,但使用yum安装后,还需要重新编译python3。但python3好......
  • compact:这是用于压缩文件和目录的Windows命令。它允许你在磁盘上节省空间,通过将文件和
    compact命令选项外,Windows操作系统中还有一些其他的compact命令选项,如下所示:compact/c:该选项用于强制压缩文件,即使它们已经被压缩过。它会覆盖现有的压缩设置。compact/i:此选项用于仅压缩文件中的空闲空间。它可以用于在磁盘上释放未使用的空间。compact/f:这个选项用于强制......
  • PHPGrafika 如何实现圆角图片
    PHPGrafika如何实现圆角图片在网站开发中,圆角图片是非常常见的一种设计元素。使用PHPGrafika库可以很方便的实现圆角图片的制作。本文将介绍如何使用PHPGrafika库制作圆角图片的方法。PHPGrafika如何实现圆角图片PHPGrafika是一款PHP图像处理库,它提供了许多图像处理功......
  • 在图片中查找指定文字的位置
    您好!对于在图片中查找指定文字的位置,您可以使用OCR(OpticalCharacterRecognition,光学字符识别)技术来实现。以下是一种常见的基本步骤:导入必要的库:例如OpenCV用于图像处理,Tesseract用于OCR识别。读取图像:使用OpenCV库中的函数读取图像文件。图像预处理:对图像进行预处理,例如灰度......
  • 根据URL批量下载文件并压缩成zip文件
    根据url批量下载图片或者视频,只需要将图片的url和名称放到数组对象即可,例如:letfileArr=[{fvUrl:'https://image.xuboren.com/image/2023/07/26/1410829074764cdbaa4314a084eb749e.jpg',fvName:'图片名称'},{fvUrl:'https://image.xuboren.com/image/2023/07/......
  • eWebEditor 从word中复制内容带多张图片
    ​ 当前功能基于PHP,其它语言流程大致相同 1.新增上传wordjson配置在ueditor\php\config.json中新增如下配置:     /* 上传word配置 */    "wordActionName":"wordupload",/* 执行上传视频的action名称 */    "wordFieldName":"upfile",/* 提交的......
  • 【Python小随笔】Pillow简单示例(图片添字,图片覆盖图片,复杂验证码...)
     简单创建添加文字到图片fromPILimportImage,ImageDraw,ImageFont,ImageFilter#导入PIL库中的相关模块importrandom#导入random库#简单的添加文字"""mode:图片模式,指定了每个像素点的颜色组织方式。常用的模式有:'1':二值图像,每个像素点只有黑和白两种颜......
  • 升级到python3以后yum报错
    升级完python后(python2升级到python3,并且将原来的/usr/bin下的python软连接给替换成python3的了),执行yum安装或查看命令都会产生这个错误:[root@localhostbin]#yumFile"/usr/bin/yum",line30exceptKeyboardInterrupt,e:^SyntaxErr......