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

2022-07-20 13:17:41 +08:00
 AllenHua

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

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

GitHub: https://github.com/hellodk34/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 即可。

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

欢迎使用。

2777 次点击
所在节点    分享创造
19 条回复
yukiwc
2022-07-20 13:45:49 +08:00
前端仔选择用 http-server
AllenHua
2022-07-20 16:01:54 +08:00
@yukiwc #1 不懂就问,这个可以压缩图片吗,其实压缩图片的 api 免费库还是有一些的,google 这个已经很不错了,还开源。
shunia
2022-07-20 17:22:29 +08:00
和直接使用 https://squoosh.app/ 什么区别?
AllenHua
2022-07-20 17:38:15 +08:00
@shunia #3 没有区别。但是可以照顾网络不好的用户,在本地也更快。还有对于喜欢自建服务的用户有帮助,大多数是比较讲究隐私的人,什么都自建,害怕图片被偷偷的传了一份到服务器(只存一段时间)被 google 用于 AI 相关的素材之类的。
shunia
2022-07-20 21:00:20 +08:00
@AllenHua #4 啊,这个网站不上传啊,wasm 纯本地的
AllenHua
2022-07-20 21:53:07 +08:00
@shunia #5 是的,我也相信不上传,只是总有人会担心,会阴谋论嘛。在本地服务也挺好,现在用着蛮爽,主要是 docker 方便,损失点磁盘空间而已
magicdawn
2022-07-21 00:55:12 +08:00
@AllenHua #4 PWA 可以断网用的
7zlid
2022-07-21 00:57:47 +08:00
Squoosh 有脚本的
更方便还能批量
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
2022-07-21 09:00:59 +08:00
@magicdawn #7 嗯嗯
@7zlid #8 能批量确实不错,一部分人的强需求
@magicdawn #9 请问这是 Fluent Terminal 还是哪个终端? shell 是 Power Shell 吗
magicdawn
2022-07-21 14:01:57 +08:00
@AllenHua #10 macOS iTerm2 啊, zsh
miankaking
2022-07-21 22:24:54 +08:00
有 docker-compose 吗
AllenHua
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
2022-07-21 23:20:14 +08:00
@miankaking #12 https://hellodk.cn/post/1077 docker-compose 建议从我的文章里复制命令,v 站评论区的 markdown 支持不太好,至少在显示层面上就不美观( yaml 对于空格啊这种缩进要求)
miankaking
2022-07-21 23:24:49 +08:00
@AllenHua 好好,谢谢🎉
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
2022-07-23 13:36:28 +08:00
@siknet 有个提示 mapping ./*.jpg to xxx files ,这个 xxx 是 1700 还是 10000 ?
siknet
2022-07-23 17:55:23 +08:00
@magicdawn 找不到 mapping 字样,这次 13000 张处理到了 9000 多才停的
dianso
322 天前
感谢,用上了,原网站不太稳定。

能简单汉化下么。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/867519

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX