分享我构建的 squoosh docker 镜像,写博客贴图直接在本地压缩文件,安全且高效 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
AllenHua
V2EX    分享创造

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

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

    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 好好,谢谢
    Hansah
        16
    Hansah  
       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 ?
    Hansah
        18
    Hansah  
       2022-07-23 17:55:23 +08:00
    @magicdawn 找不到 mapping 字样,这次 13000 张处理到了 9000 多才停的
    dianso
        19
    dianso  
       2023-12-16 22:29:22 +08:00
    感谢,用上了,原网站不太稳定。

    能简单汉化下么。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5803 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 46ms UTC 01:34 PVG 09:34 LAX 18:34 JFK 21:34
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86