找回密码
 立即注册
搜索
查看: 882|回复: 39

[原创软件] 图片压缩工具 压缩图片大小到2m以下

[复制链接]
灌水成绩
1524
0
30557
主题
回帖
积分

等级头衔

人在江湖

积分成就 威望 : 292
九币 : 3537
贡献值 : 8214
热心值 : 8207
违规 : 0
注册时间 : 2024-5-3

勋章

百科全书奖章手游达人奖终身成就奖在线狂人回帖大师活跃会员奖热心会员奖新人进步奖宣传大使奖端游达人奖福利达人奖网吧勋章认证作者年度幸运奖辅助达人奖

发表于 2024-5-5 20:31:47 | 显示全部楼层 |阅读模式
从论坛找的几个软件不能压缩实际是png格式但是扩展名为jpeg的图片,所以鼓捣了个能用的


软件说明:
        一个用于图片压缩的Python脚本。它使用了PIL库(Pillow库的一部分)来处理图像,并通过调整图像的质量来实现压缩。首先,定义了一个compress_image函数,它接受输入文件路径、输出文件路径和目标文件大小作为参数。该函数会打开输入文件,并将图像模式转换为RGB(如果原始图像是RGBA格式)。然后,保存原始图像并获取其大小。如果原始图像已经小于等于目标文件大小,函数直接返回。否则,通过逐渐降低图像质量,使图像大小接近目标文件大小。最终保存压缩后的图像。接下来,定义了一个compress_images函数,它接受目标文件大小作为参数。该函数会在当前目录下创建一个名为"new"的文件夹,用于存放压缩后的图像。然后,遍历当前目录下的所有文件,如果文件是图像文件(JPEG、PNG、BMP、GIF、TIFF格式),则调用compress_image函数进行压缩,并将压缩后的图像保存到"new"文件夹中。最后,在主程序中设置了目标文件大小为2MB,然后调用compress_images函数进行压缩。最后输出"图片压缩完成"的提示信息。


软件使用示例: 放到需要压缩图片同目录,双击运行,直到提示按任意键退出,压缩后图片保存到同目录下new文件夹

  1. import os
  2. from PIL import Image

  3. def compress_image(input_file, output_file, target_size):
  4.     with Image.open(input_file) as img:
  5.         # Convert RGBA to RGB if necessary
  6.         if img.mode == 'RGBA':
  7.             img = img.convert('RGB')

  8.         # 保存原始图片质量
  9.         img.save(output_file, optimize=True, quality=95)
  10.          
  11.         # 获取原始图片大小
  12.         original_size = os.path.getsize(output_file)

  13.         # 如果图片已经小于目标大小,则直接返回
  14.         if original_size <= target_size:
  15.             return

  16.         # 调整压缩质量,使得图片大小接近目标大小
  17.         quality = 70
  18.         while original_size > target_size and quality >= 5:
  19.             quality -= 5
  20.             img.save(output_file, optimize=True, quality=quality)
  21.             original_size = os.path.getsize(output_file)

  22. def compress_images(target_size):
  23.     # 创建存放压缩后图片的文件夹new
  24.     os.makedirs("new", exist_ok=True)

  25.     # 遍历当前目录下所有文件
  26.     for file in os.listdir():
  27.         if os.path.isfile(file) and is_image_file(file):
  28.             input_file = file
  29.             output_file = os.path.join("new", file)
  30.             compress_image(input_file, output_file, target_size)

  31. def is_image_file(file):
  32.     try:
  33.         with Image.open(file) as img:
  34.             return img.format in ['JPEG', 'PNG', 'BMP', 'GIF', 'TIFF']
  35.     except IOError:
  36.         return False

  37. if __name__ == "__main__":
  38.     # 设置目标文件大小为2MB
  39.     target_size = 2 * 1024 * 1024

  40.     # 压缩当前目录下所有图片
  41.     compress_images(target_size)

  42.     print("图片压缩完成")
  43.      
  44. os.system("pause")
复制代码
162109csj0ebzbcv067bob(1).png

下载链接:
游客,如果您要查看本帖隐藏内容请回复



灌水成绩
0
1238
1248
主题
回帖
积分

等级头衔

出类拔萃

积分成就 威望 : 0
九币 : 619
贡献值 : 0
热心值 : 629
违规 : 0
注册时间 : 2024-5-5

勋章
发表于 2024-5-6 11:18:45 | 显示全部楼层
高手!期待持续更新!
回复

使用道具 举报

灌水成绩
0
1268
1278
主题
回帖
积分

等级头衔

出类拔萃

积分成就 威望 : 0
九币 : 634
贡献值 : 0
热心值 : 644
违规 : 0
注册时间 : 2024-5-5

勋章
发表于 2024-5-6 14:55:39 | 显示全部楼层
谢谢大佬分享
回复

使用道具 举报

灌水成绩
0
14
24
主题
回帖
积分

等级头衔

锋芒初露

积分成就 威望 : 0
九币 : 7
贡献值 : 0
热心值 : 17
违规 : 0
注册时间 : 2024-5-5

勋章
发表于 2024-5-6 17:27:24 | 显示全部楼层
大神级别。太赞了
回复

使用道具 举报

灌水成绩
0
1238
1248
主题
回帖
积分

等级头衔

出类拔萃

积分成就 威望 : 0
九币 : 619
贡献值 : 0
热心值 : 629
违规 : 0
注册时间 : 2024-5-5

勋章
发表于 2024-5-7 04:00:08 | 显示全部楼层
好东西分享 点赞点起来
回复

使用道具 举报

灌水成绩
0
120
130
主题
回帖
积分

等级头衔

锋芒初露

积分成就 威望 : 0
九币 : 60
贡献值 : 0
热心值 : 70
违规 : 0
注册时间 : 2024-5-6

勋章
发表于 2024-5-7 09:56:16 | 显示全部楼层
66666666666666
回复

使用道具 举报

灌水成绩
0
1267
1289
主题
回帖
积分

等级头衔

出类拔萃

积分成就 威望 : 0
九币 : 1413
贡献值 : 0
热心值 : 655
违规 : 0
注册时间 : 2024-5-5

勋章
发表于 2024-5-7 23:33:26 | 显示全部楼层
支持一下
回复

使用道具 举报

灌水成绩
0
84
94
主题
回帖
积分

等级头衔

锋芒初露

积分成就 威望 : 0
九币 : 42
贡献值 : 0
热心值 : 52
违规 : 0
注册时间 : 2024-5-7

勋章
发表于 2024-5-8 14:44:43 | 显示全部楼层
感谢,收藏了
回复

使用道具 举报

灌水成绩
0
76
86
主题
回帖
积分

等级头衔

锋芒初露

积分成就 威望 : 0
九币 : 38
贡献值 : 0
热心值 : 48
违规 : 0
注册时间 : 2024-5-6

勋章
发表于 2024-5-9 03:02:37 | 显示全部楼层
高手!期待持续更新!
回复

使用道具 举报

灌水成绩
0
128
138
主题
回帖
积分

等级头衔

锋芒初露

积分成就 威望 : 0
九币 : 64
贡献值 : 0
热心值 : 74
违规 : 0
注册时间 : 2024-5-6

勋章
发表于 2024-5-9 04:28:38 | 显示全部楼层
66666666666666
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|爱游戏论坛 |网站地图

GMT+8, 2024-11-24 14:00 , Processed in 0.090260 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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