V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
AllenHua
V2EX  ›  分享创造

分享我构建的 squoosh docker 镜像,写博客贴图直接在本地压缩文件,安全且高效

  •  
  •   AllenHua · 2022-07-20 13:17:41 +08:00 · 2813 次点击
    这是一个创建于 864 天前的主题,其中的信息可能已经有所发展或是发生改变。

    docker 镜像是 dko0/squoosh:1.12.0 或者 dko0/squoosh:latest

    docker hub: https://hub.docker.com/r/dko0/squoosh

    GitHub: https://github.com/hellodk34/squoosh

    • 安全,图片只在本地浏览器,不会上传到任何服务器
    • 高效,squoosh 压缩效率惊人,图片品质却没有损失多少,配合各种压缩选项和品质设置,自由度很高。这波必须赞美 https://github.com/GoogleChromeLabs/squoosh

    之前看到这个帖子 压缩图片文件大小有什么好的方案? 我刚好有这个需求,于是在 docker hub 搜了一下发现居然没有可用的镜像,试了几个跑不起来,比如 downloads 最多的 https://hub.docker.com/r/victor141516/squoosh 。然后只好自己动手。

    使用 docker buildx build ,支持 amd64 arm64 和 arm v7 架构,应该满足绝大多数用户的使用场景了。

    # docker buildx build -f ./Dockerfile -t NAMESPACE/squoosh:1.12.0 --platform=linux/arm64,linux/amd64,linux/arm/v7 .
    

    此镜像使用起来非常简单,一句搞定。

    # docker run -d --name squoosh \
        --restart unless-stopped \
        -p 7701:8080 \
        dko0/squoosh:1.12.0
    

    然后访问 http://YOUR_IP:7701 即可。

    squoosh Snipaste_2022-07-20_12-17-25

    20220720125958

    我测试了一个 10MB 的风景图片( iPhone 12 拍摄),直接压缩到了 739KB ,quality 是默认的 75 ,支持打开文件或者直接从剪贴板 control/command + V ,体验真不错。现在写博客使用自己的图床,以后贴图可以多考虑考虑压缩一下图片体积了。

    image.jpg

    欢迎使用。

    第 1 条附言  ·  2022-07-22 16:58:08 +08:00

    不知道为什么,已经过去了超过 48 小时了,至今无法在 docker hub 上搜索到这个镜像,docker search 命令行也搜不到,有大佬指点下吗

    可以正常 docker pull,镜像也是 public 的。

    19 条回复    2023-12-16 22:29:22 +08:00
    yukiwc
        1
    yukiwc  
       2022-07-20 13:45:49 +08:00
    前端仔选择用 http-server
    AllenHua
        2
    AllenHua  
    OP
       2022-07-20 16:01:54 +08:00
    @yukiwc #1 不懂就问,这个可以压缩图片吗,其实压缩图片的 api 免费库还是有一些的,google 这个已经很不错了,还开源。
    shunia
        3
    shunia  
       2022-07-20 17:22:29 +08:00
    和直接使用 https://squoosh.app/ 什么区别?
    AllenHua
        4
    AllenHua  
    OP
       2022-07-20 17:38:15 +08:00
    @shunia #3 没有区别。但是可以照顾网络不好的用户,在本地也更快。还有对于喜欢自建服务的用户有帮助,大多数是比较讲究隐私的人,什么都自建,害怕图片被偷偷的传了一份到服务器(只存一段时间)被 google 用于 AI 相关的素材之类的。
    shunia
        5
    shunia  
       2022-07-20 21:00:20 +08:00
    @AllenHua #4 啊,这个网站不上传啊,wasm 纯本地的
    AllenHua
        6
    AllenHua  
    OP
       2022-07-20 21:53:07 +08:00 via iPhone
    @shunia #5 是的,我也相信不上传,只是总有人会担心,会阴谋论嘛。在本地服务也挺好,现在用着蛮爽,主要是 docker 方便,损失点磁盘空间而已
    magicdawn
        7
    magicdawn  
       2022-07-21 00:55:12 +08:00
    @AllenHua #4 PWA 可以断网用的
    7zlid
        8
    7zlid  
       2022-07-21 00:57:47 +08:00 via Android
    Squoosh 有脚本的
    更方便还能批量
    magicdawn
        9
    magicdawn  
       2022-07-21 01:13:19 +08:00
    ![image]( https://user-images.githubusercontent.com/4067115/180041556-8f738756-8c7a-49b0-86fe-c298d34374f0.png)

    我写的工具 handy-img https://github.com/magicdawn/handy-img
    可以试试直接 npx / yarn dlx / pnpm dlx / pnpx 使用, 以 pnpx 为例
    pnpx handy-img c -f input.jpg -o output.jpg


    支持 webp 和 jpeg 两种输出格式, jpeg 采用了和 squoosh 相同代码的 mozjpeg, 但 squoosh 是 wasm, handy-img 是相同 cpp 代码转成了 Node.js N-API addon, 比 @squoosh/cli 效率更高.

    支持各种各样的批量操作: 支持 glob 输入, 支持定制输出 pattern, 支持 dir mode
    AllenHua
        10
    AllenHua  
    OP
       2022-07-21 09:00:59 +08:00
    @magicdawn #7 嗯嗯
    @7zlid #8 能批量确实不错,一部分人的强需求
    @magicdawn #9 请问这是 Fluent Terminal 还是哪个终端? shell 是 Power Shell 吗
    magicdawn
        11
    magicdawn  
       2022-07-21 14:01:57 +08:00
    @AllenHua #10 macOS iTerm2 啊, zsh
    miankaking
        12
    miankaking  
       2022-07-21 22:24:54 +08:00
    有 docker-compose 吗
    AllenHua
        13
    AllenHua  
    OP
       2022-07-21 22:43:15 +08:00
    @miankaking #12

    ```
    cat > squoosh-compose.yml <<EOF
    version: '3'
    services:
    squoosh:
    image: dko0/squoosh:1.12.0
    container_name: squoosh
    networks:
    - squoosh-net
    ports:
    - 7701:8080
    restart: unless-stopped
    networks:
    squoosh-net:
    EOF
    ```

    然后执行 docker-compose -f ./squoosh-compose.yml up -d
    AllenHua
        14
    AllenHua  
    OP
       2022-07-21 23:20:14 +08:00
    @miankaking #12 https://hellodk.cn/post/1077 docker-compose 建议从我的文章里复制命令,v 站评论区的 markdown 支持不太好,至少在显示层面上就不美观( yaml 对于空格啊这种缩进要求)
    miankaking
        15
    miankaking  
       2022-07-21 23:24:49 +08:00   ❤️ 1
    @AllenHua 好好,谢谢🎉
    siknet
        16
    siknet  
       2022-07-23 12:04:33 +08:00
    @magicdawn 大佬,你这个好用,但是有个问题,好像一次最多只能处理目录下 17xx 张照片?能不能帮看看问题出在哪?我有个文件夹下有一万多张 jpg ,每张大概一百多 K ,命令行如下,处理到 1700 多张的时候就自然结束了,也没有抛出任何出错信息。

    npx handy-img c -f './*.jpg' -o ':dir\compressed\:name.:ext' -y --codec mozjpeg -q 75
    magicdawn
        17
    magicdawn  
       2022-07-23 13:36:28 +08:00 via Android
    @siknet 有个提示 mapping ./*.jpg to xxx files ,这个 xxx 是 1700 还是 10000 ?
    siknet
        18
    siknet  
       2022-07-23 17:55:23 +08:00
    @magicdawn 找不到 mapping 字样,这次 13000 张处理到了 9000 多才停的
    dianso
        19
    dianso  
       350 天前
    感谢,用上了,原网站不太稳定。

    能简单汉化下么。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2759 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 14:56 · PVG 22:56 · LAX 06:56 · JFK 09:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.