图片压缩

项目地址(双端仓库):


缘起

网上压图无非两类:在线网站、本地 GUI。

在线网站永远绕不开「上传」二字——图先发到别人服务器才算完,谁知道拿去干嘛;而且默认有损,画质肉眼糊一圈,批量一多就限速要会员。本地工具呢,要么界面古早得像 Win98,要么只做有损。

我想要的是一个:图不出本机、原格式真无损、界面能看、还能批量 的工具。没有,就自己写一个——于是有了 JpgLossless · 图片无损压缩工作台

一句话介绍它:所有压缩都在你电脑上完成,图片不会上传任何服务器;原格式压缩是真·无损(只变小、不损画质),也能转 WebP / PNG / JPG。


它到底是什么

纯本地运行的图片压缩工具。界面用系统 Edge WebView2 内核渲染(「工程蓝图」风格),压缩逻辑全部在本机完成,图片不会上传任何服务器

你给它一堆照片,它帮你压小、按需转格式、保持目录结构,最后把结果摊在你面前——每一张压没压小、压了多少,一眼看得见。


核心能力(详细介绍)

  • 原格式无损:JPG / PNG 用 ect 引擎做霍夫曼优化 + 去元数据 / 重压缩,体积变小但像素一个不少;引擎首次使用自动下载,无网络时把 ect.exe 丢进 bin/ 即可。
  • 转格式:WebP(质量设 100 即无损)/ PNG / JPG(JPG 有损,质量可调,默认 100 即等价无损)。
  • 批量拖入 + 文件夹递归:把整个文件夹拖进去,子目录自动递归、输出保持原目录结构。
  • 像素对比条:每个文件行里一条对比条——灰色=原大小,蓝/绿=压缩后(变绿表示更小、变橙表示反而变大),配合等宽字节数和百分比,压没压小一眼可见,不用猜。
  • 输出前预览对比:选中某个文件点「预览选中对比」,先在右侧看前后效果再决定是否开压。
  • 设置自动记忆:保存位置、格式、后缀、质量等写进 exe 同目录的 config.json,下次启动自动恢复。
  • 四套主题:经典 / 新拟物 × 日 / 夜,看久了也不累。
  • 失败可重试:压挂的图片跨重启持久化,回来一键重试,不会白压。

我加的几个「小心思」(亮点)

这些是我在基础功能之上,按自己真实使用习惯一点点补上的:

  • 自动删除源文件(可选):压完确认没问题,勾一下就把原图删了,省得手动清。
  • 大批量模式:几千张图一次性塞进来时,关掉缩略图生成,内存直接省一大截,2GB 量级也能稳稳跑完。
  • Web 大文件断点续传:上传大图走分片 + 断点续传,网络抖一下不用从头再来。
  • 压缩质量可手填:质量框直接敲数字(已收窄成 4 位数字宽,不再是一长条),调参更顺手。
  • 反馈直达 GitHub Issue:界面点「发送反馈」会帮你打开预填好的 Issue 页,直接提交到项目仓库,提需求/报 bug 一步到位。

几个印象最深的坑(技术向)

  1. 中文路径崩溃ectstd::filesystem 开文件,Windows 上遇中文 / 全角括号直接报 “encoding error 6”。解法:先把文件复制到临时 ASCII 名路径让 ect 处理,再拷回原路径,现在中文目录名随便用。
  2. WebView2 死锁:后台压缩线程直接调 evaluate_js 注入前端,在 Windows 下会死锁,表现为「点开始就卡死」。改成后端只往线程安全队列塞事件,前端轮询拉取,彻底解决;再加看门狗自动恢复卡死的按钮。
  3. 大批量卡死:几千张图一次性 base64 拼巨大数组会撑爆桥接。改成分批传输(每批约 24MB 原始数据)+ 缩略图懒加载。
  4. 单文件 exe 持久化:PyInstaller 打包后 __file__ 在临时目录,配置写那会丢失。统一把 config / 引擎落到 exe 所在目录,跨重启保留。

v1.1 更新了什么

  • 反馈通道随 GitHub 账号迁移:仓库从旧账号迁到 neutron-star77,Issue 反馈、解密页都指向新地址(neutron-star77.github.io/beast_decode_page/)。
  • 压缩质量输入框收窄:之前质量框被全局样式撑成 150px 的长条,现在收成 4 位数字宽、字号 12px,调参更聚焦。
  • 工程侧:提交邮箱改为 noreply,避免被 GitHub 拦截推送(对用户无感)。

怎么拿到

进仓库的 Releases / 发行版,找最新版本(如 v1.1),在 Assets / 资源里点 JpgLossless.exe 下载,双击即用。

  • Windows 10 / 11,需 Edge WebView2 运行时(系统通常自带;若双击报错提示缺少,到微软官网装「WebView2 Runtime」即可)。
  • 不需要装 Python、不需要手动放 ect.exe

如果你的博客平台会吞外链,下载地址也可以用「兽语 + 二维码」方式拿到:扫码或粘贴兽语到解密页 https://neutron-star77.github.io/beast_decode_page/ 自动解出下载链接。


写在最后

工具已经打包成双击即用的单文件 exe,源码也整理在双端仓库里。如果你也在意图片隐私和画质,欢迎试试,也欢迎提需求。