V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
likeunix
V2EX  ›  程序员

开发一个 TinyPNG 图像压缩桌面端工具,免费开源,无限制

  •  
  •   likeunix · 2022-01-22 10:17:33 +08:00 · 7417 次点击
    这是一个创建于 1067 天前的主题,其中的信息可能已经有所发展或是发生改变。

    TinyPNG 是一款深受前端工程师 喜爱的图片压缩工具,打开 http://tinypng.com ,将图批量拖拽至指定区域,图片即开始压缩。官方给出的数据显示,PNG 文件最高能减小 70%的体积。

    不过网页端压缩有单张图片 5M 的限制。所以推荐一个免费开源的 TinyPNG 桌面端工具,支持一件拖放,没有单次压缩数量限制,可显示上传下载进度,小巧快速。希望各位给个星星支持下,GitHub 和安装包下载地址见文末。

    Github 地址: https://github.com/chenjing1294/TinyGUI 安装包下载地址: http://www.redisant.cn/#Family

    第 1 条附言  ·  2022-01-23 18:50:14 +08:00
    各位大佬,别忘了给小弟留个星星
    48 条回复    2022-01-24 08:04:59 +08:00
    yEhwG10ZJa83067x
        1
    yEhwG10ZJa83067x  
       2022-01-22 10:32:11 +08:00
    IPsersisiFile::Save 失败
    liuxu
        2
    liuxu  
       2022-01-22 10:39:00 +08:00 via Android   ❤️ 1
    你是 tinypng 的作者还是?如果不是的话建议换项目名,尊重下别人的版权
    likeunix
        3
    likeunix  
    OP
       2022-01-22 10:46:28 +08:00   ❤️ 3
    @liuxu 你看看这里还有哪些要换? https://tinify.cn/third-party ,项目名叫 TinyGUI 如何不尊重别人版权了?
    stille
        4
    stille  
       2022-01-22 10:56:26 +08:00 via iPhone   ❤️ 2
    原来是 pc 版

    https://github.com/kyleduo/TinyPNG4Mac
    这个 Mac 版也更新到支持 M1 了
    likeunix
        5
    likeunix  
    OP
       2022-01-22 10:59:59 +08:00
    @stille 见过,非常不错😀,我这个是 Windows 平台,不支持 mac
    maplerecall
        6
    maplerecall  
       2022-01-22 11:05:07 +08:00 via Android
    http://nullice.com/limitPNG/

    顺带也推荐一个一直在用的离线版本的 png 压缩工具,支持批量有损无损压缩和不同压缩算法对比,效果很好。虽然很久没更新了但还是好用的。
    liuxu
        7
    liuxu  
       2022-01-22 11:14:10 +08:00 via Android
    @likeunix 就你帖子内容看,你是基于 tinypng (可能)做的工具,这样的话 tiny 这个词和官方名字有明显的一致性,别人已经商业化了,并不应该像基于开源项目这么玩,不过只有道德问题,阿迪王也过的好好的

    不过如果你是自己基于某 lib 写的,名字没问题

    ps: 顺便我建议你用 imaginary 做,也就是直接用 libvips 做,有 c 库

    你可以试试这个 api: https://imaginary.linux.plus/
    liuxu
        8
    liuxu  
       2022-01-22 11:17:26 +08:00 via Android
    @liuxu 如果官方支持的话也是可以的,我只是看到帖子提醒一下
    markgor
        9
    markgor  
       2022-01-22 11:19:06 +08:00
    你这.....
    调用 tinyPNG 的 API 服务,
    做了个壳....
    不过批量和单张限制 好评
    shidianxia
        10
    shidianxia  
       2022-01-22 11:19:44 +08:00   ❤️ 3
    这类工具有个完美方案: https://imageoptim.com
    开源,跨平台,离线,支持超多格式和算法,甚至支持 SVG 压缩。支持 CLI ,支持 mac 自动化。
    likeunix
        11
    likeunix  
    OP
       2022-01-22 11:23:01 +08:00   ❤️ 1
    我是调用 tinyPNG 的 API 服务做了可视化界面(官方开放的 API ),方便使用,没有网页端端的单张大小限制,就是分享个自己在用的工具而已。
    ryh
        12
    ryh  
       2022-01-22 11:34:11 +08:00
    不能离线的都用处不大,也不安全。
    当然你可能会说,你不关心隐私,但你不在乎隐私也不在乎其他用你服务的用户的隐私?
    liuxu
        13
    liuxu  
       2022-01-22 11:37:40 +08:00 via Android
    @likeunix #11 项目本身是很优秀的
    falcon05
        14
    falcon05  
       2022-01-22 11:56:25 +08:00
    版权战士真的恶心
    tuwulin365
        15
    tuwulin365  
       2022-01-22 12:04:04 +08:00
    这是把真彩色压成索引色了?
    jh163888
        16
    jh163888  
       2022-01-22 12:17:39 +08:00 via Android
    @stille 你还折腾了好久😂
    3dwelcome
        17
    3dwelcome  
       2022-01-22 12:42:48 +08:00 via Android
    @tuwulin365 是的,这就是所谓 tinypng 的秘诀,我也是醉了。
    我就希望保存真彩色,自动转索引色也太伤了。
    MacDows
        18
    MacDows  
       2022-01-22 12:48:47 +08:00 via Android   ❤️ 1
    wangxn
        19
    wangxn  
       2022-01-22 13:23:17 +08:00   ❤️ 1
    cht
        20
    cht  
       2022-01-22 15:54:12 +08:00
    @shidianxia #10 长期目测下来 imageoptim slowest 的压缩率不如 tinypng ,且后者稍微快一点
    jqtmviyu
        21
    jqtmviyu  
       2022-01-22 15:56:41 +08:00   ❤️ 1
    kirile
        22
    kirile  
       2022-01-22 16:32:58 +08:00
    我也写过一个 免费的虽然没大小限制但是有数量限制, 500 张 /月. 之前压缩安卓里的图片的时候, 一会配额就没了, 还借了个别人的号才压完
    sbmzhcn
        23
    sbmzhcn  
       2022-01-22 16:39:04 +08:00
    https://pngquant.org/ pngquant 远远达不到 tinypng 的压缩率,虽然它本身很优秀的,但 tinypng 压缩后的都比 pngquant 小,不知道 tinypng 用了什么算法,总是压缩成最小的。
    likeunix
        24
    likeunix  
    OP
       2022-01-22 16:39:51 +08:00 via Android
    @kirile 是的,也就是个人偶尔用下,不能大规模商用,商用要 pro 版
    muzuiget
        25
    muzuiget  
       2022-01-22 16:54:10 +08:00   ❤️ 1
    @liuxu Github 的仓库地址中用户名已经是 namespace 了,哪里还有人会觉得是官方,自己的名字下项目爱用什么名字都行,只要用户名碰瓷官方名才有可能误导别人。
    vsean
        26
    vsean  
       2022-01-22 17:20:36 +08:00
    TinyPNG 我使用好多年了,同样画质体积最小,同样体积画质最好
    leonard916
        27
    leonard916  
       2022-01-22 18:47:24 +08:00
    @maplerecall LimitPNG +1 虽然好久不更新了
    zhangshine
        28
    zhangshine  
       2022-01-22 19:07:04 +08:00
    目前用的 pngquant ,虽然没有 tinypng 小,但是足够了。
    janus77
        29
    janus77  
       2022-01-22 19:31:22 +08:00
    retrocode
        30
    retrocode  
       2022-01-22 19:52:45 +08:00
    说到这个我之前也用 electron 做了一个自用的压图工具,调的 imagemin 库,偶尔用来压图还蛮不错的

    https://github.com/ShowMeBaby/electron-imagemin-tools
    AthensBird
        31
    AthensBird  
       2022-01-22 20:42:41 +08:00
    @zhangshine Tinypng 的质量损失比 Pngquant 大
    kkocdko
        32
    kkocdko  
       2022-01-22 21:20:24 +08:00 via Android
    1. pngquant 是目前最先进的 PNG 靠色工具,没有之一。详情请见 https://pngquant.org 。最近作者改进了算法,使用 Rust 重写,用类似算法对 GIF 也做了类似的优化。
    2. pngquant 有许多参数可调,需要自行权衡质量,体积与算力。上边许多层主没有控制变量的比较,无异于"360 压缩-LZMA vs 7-zip-deflate",是没有可比性的。
    3. 目前已知最强的 PNG 压缩方案是:pngquant 有损靠色 + zopflipng 无损压缩。
    3. 题主这样一个调用 TinyPNG API 的工具,怎么说呢,从技术上来讲确实没有太大的突破。已经有更多更优秀的方案了。
    icyalala
        33
    icyalala  
       2022-01-22 22:26:29 +08:00   ❤️ 1
    @kkocdko 大厂做移动开发的,总会遇到需要优化包大小的时候。
    UI 素材至少我们尝试过非常多的方法,包括 ImageOptim 里面那些有损和无损方法,其中就有 pngquant 。
    无损压缩即使优化级别再高,体积离 TinyPNG 都差很远;有损压缩在设计同学可接受的范围内,基本上体积都还是不如 TinyPNG ,而且压缩太过消耗时间。
    superfatboy
        34
    superfatboy  
       2022-01-22 22:50:05 +08:00
    有什么不需要第三方 api 的,推荐一个啊
    likeunix
        35
    likeunix  
    OP
       2022-01-22 22:56:15 +08:00 via Android
    @superfatboy 你看看上边的评论啊
    lemonda
        36
    lemonda  
       2022-01-22 23:48:29 +08:00   ❤️ 1
    这个对我非常有用
    kkocdko
        37
    kkocdko  
       2022-01-23 02:47:07 +08:00
    @icyalala

    首先指出一点:我前边的表述可能有歧义,第 3 点的意思是 先 pngquant 后 zopflipng ,而不是分别进行。

    我刚刚测试了一下,确实很难评判 TinyPNG 和 pngquant 2.17.0+zopfli 的胜负。我发现 TinyPNG 更偏向保持过渡(阴影)的连续性,而 pngquant 更偏向保持原本的颜色,于是就更容易出现断层。这可能是你认为 TingPNG 效果更好的原因之一,毕竟前端素材很多都带有阴影和渐变。

    (当然这只是猜测,TinyPNG 不开源,啥也看不到)

    “压缩太过消耗时间”,我不太理解你的意思,是说 zopfli 很慢么?我已经说过了,调参自行权衡,我猜测 TinyPNG 使用了较弱参数 zopfli ,因为测试发现 TinyPNG 处理后依然可以用默认预设 zopfli 压榨出一点点体积。
    Maskeney
        38
    Maskeney  
       2022-01-23 06:12:12 +08:00
    不过还是不懂为什么一个调用 API 的压缩图片的软件上来就要管理员权限

    kkocdko
        39
    kkocdko  
       2022-01-23 07:18:42 +08:00
    @Maskeney 这是安装程序,你可以直接拆包。
    likeunix
        40
    likeunix  
    OP
       2022-01-23 07:50:13 +08:00 via Android
    @Maskeney 安装的时候需要管理员,安装完运行不需要管理员,或者你也可以自己编译源码。
    xianqin
        41
    xianqin  
       2022-01-23 11:17:28 +08:00 via Android
    忍不住又想一起卷。虽然写好后就丢那不更新了
    https://imagetool.app/ 离线压缩,不限无制
    xianqin
        42
    xianqin  
       2022-01-23 11:18:50 +08:00 via Android
    @xianqin 离线压缩,无限制
    Maskeney
        43
    Maskeney  
       2022-01-23 11:54:13 +08:00
    @kkocdko
    @likeunix

    晓得了,不过之前用过一些软件安装包是先问安装给所有用户还是仅当前用户,前者再提权,后者就直接无管理员权限安装了
    dudor
        44
    dudor  
       2022-01-23 13:09:55 +08:00
    转换为 webp 格式也不错,前几天写的批量转换脚本。
    https://gist.github.com/dudor/979378c18dc07e7b599c737c6120bd9b
    preach
        45
    preach  
       2022-01-23 17:40:35 +08:00
    标题 带个基于就好 tinypng
    likeunix
        46
    likeunix  
    OP
       2022-01-23 19:04:47 +08:00 via Android
    @preach 嗐,现在没法改了😅
    ragnaroks
        47
    ragnaroks  
       2022-01-23 23:24:42 +08:00
    @likeunix 可以用 msix 打包器生成“适用于当前用户的无依赖无残留”的安装器,具体效果就如同 vscode 的安装器,无特权默认安装到 C:\Users\*\AppData\Local\Programs
    likeunix
        48
    likeunix  
    OP
       2022-01-24 08:04:59 +08:00 via Android
    @ragnaroks 好的,最近试试
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1366 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:24 · PVG 01:24 · LAX 09:24 · JFK 12:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.