用python写一个压缩图片到指定大小的脚本

本文介绍了一名测试人员如何使用Python编写脚本来压缩图片以适应上传大小限制。作者在原有的使用Pillow库通过调整压缩质量的方法基础上,发现了稳定性问题。为了解决这一问题,作者采用了循环降低图片分辨率的策略,实现了对PNG和大尺寸图片的良好支持,并将脚本打包为EXE程序。
摘要由CSDN通过智能技术生成

事情起因:

本人是一名测试,单位里的测试时不时要测试上传图片的大小边界值,每次找图片都很不方便,所以我想自己写个python脚本去实现它。

事情经过:

经过不断百度+csdn,发现也有不少前辈有着类似的需求,也有做了类似的脚本,用的pillow库,思路是通过循环另存一张图片,如果另存后大小不符合自己的要求,就把压缩比率(参数为quality)降低再保存,思路挺好的,效果也有,但似乎不太稳定,我copy脚本玩了一会,发现只支持jpg格式,像png,bmp好像是什么无损格式,不支持这样的压缩,用5M的图片测试是成功的,换成一张15M的图片就失败了,不知道为什么。

事情结果:

我自己在这个基础上,用同样的思路,换了一种方法,不通过压缩比率,通过循环降低分辨率的方法去实现,测试结果良好,比通过压缩比率的稳定,无论是png格式还是15M的大图片都支持。目前已经打包成了exe程序在用,后续有没有其他问题,暂且还不清楚。

import os
from PIL import Image


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


def get_outfile(file):
    file_name, file_suffix = os.path.splitext(file)
    outfile = '{}(压缩后){}'.format(file_name, file_suffix)
    return outfile


def compress_image(infile, target_size):

    """
    :param infile: 压缩源文件路径
    :param target_size: 压缩到目标大小
    """

    if '\\' not in i
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值