# PicSizer **Repository Path**: ndevel/pic-sizer ## Basic Information - **Project Name**: PicSizer - **Description**: 一款支持将图片压缩到指定大小(KB)的批量压缩软件 - **Primary Language**: C# - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 34 - **Created**: 2025-08-25 - **Last Updated**: 2025-08-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目介绍 PicSizer是一款图片批量压缩软件, 解决了传统压缩软件只能指定压缩比, 而不能指定压缩后的大小的问题. 在网页中, 图片需要尽可能占用更少的带宽, 盲目使用画质作为唯一标准来压缩图片的后果是大图片压缩后仍然较大, 而小图片越压缩越模糊. PicSizer 可以在尽可能保证图片质量的情况下, 将图片尽可能压缩到指定的大小, 例如 200 KB. 对大图片降低画质, 对小图片仅转码而不改变画质, 可以满足大部分需求. # PicSizer的优势 ## 注重效率 - 通过二分查找来计算符合条件的最高画质 - 使用内存流读写的方法来避免文件读写时的低效 - 使用多个线程来充分使用 CPU 的性能 ## 使用方便 - 程序体积小巧, 没有多余的装饰, 专注于实际体验 - 绿色软件, 无需安装. 运行过程中仅会往临时目录解压 dll 文件, 除此之外不会主动创建或修改任何文件, 不会尝试后台运行或修改系统设置 - 开门见山, 没有花哨的欢迎语等任何弹出式消息, 直奔主题 # 下载与使用 ## 下载地址 [转到 Gitee 下载](https://gitee.com/dearxuan/pic-sizer/releases) #[PicSizer.exe](PicSizer/bin/x64/Release/PicSizer.exe)# 界面截图 ![主界面](Res/0.jpg) ![使用期间](Res/1.jpg) ![设置界面](Res/2.jpg) # 格式说明 PicSizer 可以读取的格式很多, 但是支持的输出格式只有 JPEG, PNG , WEBP (仍在完善中). # 功能说明 ## 批量增删图片 PicSizer 支持每次打开同一目录下的图片或通过拖拽的方式将图片拖入窗体, 并将生成的图片保存至指定目录. 如果指定的目录不存在, 会自动生成; 如果目录中已经有文件, 则同名文件将会被直接替换而不事先警告. 增加图片时会自动将地址与列表中的地址比对, 如果已存在, 则会跳过, 并在添加完成后提示有几张图片被跳过. 使用 SHIFT 或 CTRL 来辅助多选, 使用 Crtl+A 全选列表, Ctrl+R 反选列表, 使用 BackSpace 或 Delete 来删除选中项. ## 尺寸修正 PicSizer 可以把图片按比例缩放 (也可以选择不缩放), 甚至破坏原图的比例. 由于 Icon 图标的特殊性, 因此 ico 图片与其它格式的图片修正方式相互独立, 一律采用强制修正 一般情况下, 你可以选择以下5种修正方式之一.
修正方式 描述
无修正 将图片按照原图尺寸输出.
不小于限定值 在保持宽度和高度不小于给定值的情况下, 尽可能按比例缩小图片. 例如, 给定 400×300 的尺寸, 而图片的尺寸为 800×800, 则修正后的尺寸为 400×400.
如果图片的宽或高已经小于给定尺寸, 则图片不会被修正.
不大于限定值 在保持宽度和高度不大于给定值的情况下, 尽可能按比例放大图片. 例如, 给定 400×300 的尺寸, 而图片的尺寸为 100×100, 则修正后的尺寸为 300×300.
如果图片的宽或高已经大于给定尺寸, 则图片不会被修正.
强制修正 图片会被强制缩放到你指定的尺寸, 即使这会破坏图片原有比例.
居中裁剪 严格按照给定的宽度和高度输出图片, 多余的部分将被删除, 如果图片太大或太小, 则会先被缩放到合适的尺寸再裁剪.
例如: 图片的原尺寸为 600×500, 而限制尺寸为 1000×1000, 则图片会先被放大到 1200×1000, 然后再裁剪掉两边.
## 压缩方式 ### 压缩强度 PicSizer 将画质划分为 100 个等级, 从 0 到 100, 数字越小表示画质越低, 占用空间也越小. 对同一张图来说, 画质通常和压缩率成正比, 即画质越低, 压缩率越低, 图片越小. 但是对不同图片来说, 相同的画质可能会有不同的压缩率. 大图片在压缩后仍然可能占用较大空间, 小图片虽然画质已经很低, 但是仍然会被压缩, 导致画质更低. 注意: PNG 图片会被转化为8位索引格式, 透明像素将被强制转化为不透明. ### 指定大小 (仅推荐 JPEG 格式) 在尽可能确保图片质量的情况下, 将图片压缩到不超过指定大小的大小. 例如, 限定大小为 200KB, 则压缩后的图片可能是 200KB, 也可能是 196KB. PicSizer 通过二分查找的方法, 在所有画质中寻找符合条件的最高画质, 因此你不必担心图片画质过低. 当改变图片格式时, 可能会出现压缩后大小比源文件更大. 例如从有损压缩 (\*. jpg) 转到无损压缩 (\*. png). 该方式仅推荐 JPEG 格式. ### 压缩预览

原图 (JPEG): 224 KB

原图 (PNG): 1.33 MB

JPEG (压缩强度=80): 114 KB

JPEG (文件大小=50 KB): 48.8 KB

PNG (压缩强度=80): 334 KB

WEBP (压缩强度=80): 11.8 KB
## 命名 在设置界面修改文件名一栏, 并输入特殊字符串, 来自定义输出的文件名
特殊字符串 描述
{index} 下标.
将会被直接替换为数字序号, 起始值可修改, 默认为 "1".
{name} 原文件名(不包含后缀).
如原文件名为 "abc.jpg", 则 "{name}" 将会被替换为 "abc". 如果有同名不同后缀的图片, 可能会出现图片被覆盖.
{ext} 后缀名.
将会被直接替换为原始文件后缀 (不包含点号).
以下是输出示例:
原始文件名+后缀 文件名配置 (假设序号为 1) 输出文件名 解释
abc.jpg {name}_{index}.png abc_1.png 直接替换
abc.png.jpg {name}.png abc.png.png 文件名为 "abc.png", 后缀为 ".jpg", 注意最后的点号才是后缀名.
abc.jpg {name}.{ext} abc.jpg 用源文件名和原后缀名来替换, 因此得到的仍是原文件名. 如果压缩的图片中有同名同后缀的图片, 且输出目录是同一个文件夹, 则会导致图片被覆盖.
abc.jpg 3.jpg 3.jpg 没有使用特殊字符串来替换文件名, 因此生成的图片全部是同名的.
## 异常处理 ### 异常说明 如果图片无论如何也无法压缩到你指定的大小, 则会抛出 “图片压缩后仍较大” 异常, 你可以勾选 “接受超出大小限制的图片”, 这样当再次遇到该情况时, PicSizer 就会输出力所能及的最小文件大小, 即便它是不符合要求的. 如果压缩过程中出错, 则会弹出提示框, 出错的图片会被标红, 但是压缩并不会因此暂停. 出错的图片仍会占用一个下标. ### 为何会压缩失败 以下是部分可能的原因 1. 图片尺寸过大, 导致即使压缩到最低画质仍然较大 2. 图片的后缀名与实际格式不符 3. 输出路径已有文件, 且文件被占用 4. 输出文件名重复 ## 多线程 PicSizer 会根据 CPU 的逻辑内核数量来调整最大线程, 但是默认只使用2个线程, 建议不要让线程数超过最大线程数的一半, 因为过多的线程会导致大量 IO 和程序卡顿. 你可以在设置里修改并发线程数.