吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 15224|回复: 70
收起左侧

[原创工具] 图片批量压缩小工具

  [复制链接]
张小宝 发表于 2018-10-18 19:44
本帖最后由 张小宝 于 2018-10-20 13:30 编辑

将软件复制到需要压缩图片的文件夹,双击软件,就会遍历当前文件夹,将所有jpg格式的文件压缩,png文件的话,会转换成jpg文件。就这么简单。下面看演示:
3.gif
用python写的,新手加的库比较大,传不了附件。
百度网盘链接: https://pan.baidu.com/s/1vx-c_Qhpv0_JUpUxO_GsOA 提取码: 2zyw






[Python] 纯文本查看 复制代码
#coding:utf-8
'''
  python图片处理
'''
import PIL.Image as image
import os
import io

#等比例压缩图片
def resizeImg(**args):
  args_key = {'ori_img':'','dst_img':'','dst_w':'','dst_h':'','save_q':100}
  arg = {}
  for key in args_key:
    if key in args:
      arg[key] = args[key]
  im = image.open(arg['ori_img'])
  ori_w,ori_h = im.size
  widthRatio = heightRatio = None
  ratio = 1
  if (ori_w and ori_w > arg['dst_w']) or (ori_h and ori_h > arg['dst_h']):
    if arg['dst_w'] and ori_w > arg['dst_w']:
      widthRatio = float(arg['dst_w']) / ori_w #正确获取小数的方式
    if arg['dst_h'] and ori_h > arg['dst_h']:
      heightRatio = float(arg['dst_h']) / ori_h
    if widthRatio and heightRatio:
      if widthRatio < heightRatio:
        ratio = widthRatio
      else:
        ratio = heightRatio
    if widthRatio and not heightRatio:
      ratio = widthRatio
    if heightRatio and not widthRatio:
      ratio = heightRatio
    newWidth = int(ori_w * ratio)
    newHeight = int(ori_h * ratio)
  else:
    newWidth = ori_w
    newHeight = ori_h
  im.resize((newWidth,newHeight),image.ANTIALIAS).save(arg['dst_img'],quality=arg['save_q'])

def list_all_files(rootdir):
    import os
    _files = []
    list = os.listdir(rootdir) #列出文件夹下所有的目录与文件
    for i in range(0,len(list)):
           path = os.path.join(rootdir,list[i])
           if os.path.isdir(path):
              _files.extend(list_all_files(path))
           if os.path.isfile(path):
              _files.append(path)
    return _files

_fs = list_all_files('.')
#将第一阶段的文件遍历出来
for f in _fs:
  if f.endswith('.jpg') or f.endswith('.png'):
    if f.endswith('.png'):
        img = image.open(f)
        img =  img.convert('RGB')
        f = f.replace(".png",".jpg")
        img.save(f)
        #源图片
    ori_img = f
        #目标图片
    dst_img = f
        #目标图片大小
    dst_w = 1980
    dst_h = 1080
        #保存的图片质量
    save_q = 75
    resizeImg(ori_img=ori_img,dst_img=dst_img,dst_w=dst_w,dst_h=dst_h,save_q=save_q)
    print(f)


本来是自己需要才写的工具,目的很简单,就是压缩图片,至于备份什么的,都不是我的需求,所以没考虑很多,确实如果分享给其他人使用,有很多不方便的地方,有很多考虑不周,感谢各位的建议。
不过我不打算做修改了,其实代码也是网上东拼西凑出来的,我也没有版权之类的,哪位同学想拿去修改,就拿去吧!

免费评分

参与人数 9吾爱币 +13 热心值 +7 收起 理由
laizui + 1 + 1 我很赞同!
老虎叼小鸡 + 1 我很赞同!
会飞的花 + 1 我很赞同!
云在天 + 6 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
yibai + 1 + 1 谢谢@Thanks!
jingyangpc + 1 + 1 鼓励转贴优秀软件安全工具和文档!
呼延浩云 + 1 + 1 mac用不了啊
会放电的皮卡丘 + 1 谢谢@Thanks!
Pear + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 张小宝 发表于 2018-10-18 20:27
Hefly 发表于 2018-10-18 20:18
这个质量有保障吗?

图片质量?压缩结果最大分辨率1920*1080。具体结果怎么样,可以自己试试
疯狂后街 发表于 2018-10-20 13:14
张小宝 发表于 2018-10-18 20:27
图片质量?压缩结果最大分辨率1920*1080。具体结果怎么样,可以自己试试

他指的应该是清晰度吧

不过我建议压缩的时候新建个文件夹将压缩好的放进去比较好吧,不然有时候有问题了或者出错了,那源文件不是都凉凉了???
Humphrrey 发表于 2018-10-18 19:47
JieW_L 发表于 2018-10-18 19:55
谢谢楼主分享,看体积好像不小,推荐一个FastStone Photo Resizer,单文件版才2.64MB
Pear 发表于 2018-10-18 19:56
好东东,简单易用
Hefly 发表于 2018-10-18 20:18
这个质量有保障吗?
SSHZDR 发表于 2018-10-18 20:32 来自手机
马克一下,有空测试
www789123 发表于 2018-10-18 20:43
谢谢分享
枕木 发表于 2018-10-18 20:49
谢谢分享
Adler_qy 发表于 2018-10-18 21:00
好东西啊!!!1以后套图就省空间了~~~
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 19:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表