吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7182|回复: 104
收起左侧

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

  [复制链接]
ccbea 发表于 2023-10-10 16:26
本帖最后由 ccbea 于 2023-10-10 16:29 编辑

从论坛找的几个软件不能压缩实际是png格式但是扩展名为jpeg的图片,所以鼓捣了个能用的


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

软件使用示例: 放到需要压缩图片同目录,双击运行,直到提示按任意键退出,压缩后图片保存到同目录下new文件夹
[Python] 纯文本查看 复制代码
import os
from PIL import Image

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

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

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

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

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

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

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

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

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

    print("图片压缩完成")
    
os.system("pause")

微信图片_20231010162100.png

免费评分

参与人数 15吾爱币 +18 热心值 +13 收起 理由
schtg + 1 + 1 谢谢@Thanks!
折旧折旧 + 1 + 1 我很赞同!
苍白之白 + 1 + 1 谢谢@Thanks!
无名之辈 + 1 + 1 我很赞同!
KEEPFORWARD + 1 我很赞同!
我心纹龙 + 1 热心回复!
sgamin1001 + 1 + 1 谢谢@Thanks!
xuminglong + 1 + 1 我很赞同!
dstasuna + 1 我很赞同!
zuo123456 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!666
Hezee + 1 谢谢@Thanks!
lzy13 + 1 + 1 谢谢@Thanks!
summcat + 1 + 1 我很赞同!
wapj152321 + 1 + 1 谢谢@Thanks!
风之暇想 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

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

test2333 发表于 2023-10-19 22:34
感谢分享,这工具挺不错的,不少论坛/网站上传图片需要以附件形式上传,而对附件大小又有限制,图片太大还传不上去,用ps去减小图片占空间大小又有点麻烦,这时候这工具就比较方便了
lysps 发表于 2024-2-23 10:24
太简便了,反而变得不方便了。
几个问题...
1、压缩后体积反而变大,很正常,但是既然体积都变大了就直接不要压缩了呗--或者不要留下新文件,结果还要自己比对能不能用。
2、会清楚一些图片信息,我没具体看,但是会让图片统一变成最新时间。不利于现在相册统计的模式。
xs332064 发表于 2023-10-11 18:23
lazhou 发表于 2023-10-11 19:11
谢谢分享!
小楼夜上 发表于 2023-10-11 20:02
可以的,这功能很实用啦。
temp2005 发表于 2023-10-11 22:39
压缩后质量怎样
t711s 发表于 2023-10-11 23:10
是无损压缩吗?
zyqking 发表于 2023-10-12 06:18
压缩后质量怎样?只能在WIN10上使用吗?
 楼主| ccbea 发表于 2023-10-12 08:39
zyqking 发表于 2023-10-12 06:18
压缩后质量怎样?只能在WIN10上使用吗?

质量挺好,行不行试试
头像被屏蔽
marvelci 发表于 2023-10-12 08:46
提示: 作者被禁止或删除 内容自动屏蔽
summcat 发表于 2023-10-12 08:46
这个真的很实用啊,很多地方照片上传不能超过2M
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 提醒:禁止复制他人回复等『恶意灌水』行为,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-4-28 19:17

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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