chore: sync local changes to Gitea

This commit is contained in:
shumengya
2026-06-24 22:10:26 +08:00
parent f45a0068a2
commit b8279e4c45
53 changed files with 581 additions and 0 deletions

100
BLOG.md Normal file
View File

@@ -0,0 +1,100 @@
# [萌芽妙妙工具]RandBG API一个零成本、可自托管的随机背景图片API
> **开源地址**: [github.com/shumengya/randbg-api](https://github.com/shumengya/randbg-api)
> **开源协议**: [MIT License](https://github.com/shumengya/randbg-api/blob/main/LICENSE)
> **在线体验**: [randbg.smyhub.com](https://randbg.smyhub.com)
> **作者**: *树萌芽*
---
## 前言
平时写博客、做落地页,总需要随机背景图。用别人的服务怕挂、怕限速;自己搭又嫌重。我想要一个**够轻、够快、够便宜**的方案——最好不用维护服务器,直接部署就能跑。
Cloudflare Workers 的 Free Tier 每月 10 万次请求,对个人项目完全够用。问题是:图片放哪儿?
直接把图片塞进 Worker 脚本不行Worker 有 4 MiB 体积限制,几十张图直接撑爆。
所以我把架构拆成两层Worker 只跑 API 逻辑,图片和前端页面全部走 **Workers Static Assets**
---
## 项目架构
```
┌─────────────┐ ┌──────────────────┐ ┌──────────────┐
│ 用户请求 │────▶│ Cloudflare Worker│────▶│ Static Assets│
│ │ │ /api/random │ │ WebP 图片 │
└─────────────┘ └──────────────────┘ └──────────────┘
```
**Worker 端**:不到 200 行 JS只做三件事——读 `manifest.json`、识别设备、302 或 JSON 响应。
**静态端**`public/` 目录下放 `index.html``manifest.json`、编号 WebP 图片。`wrangler deploy` 一次把前后端一起发布。
这样做的好处很直接:
- Worker 脚本极小,冷启动几乎无感
- 图片走 Cloudflare CDN全球缓存
- 不涉及数据库,无状态,不存在宕机
---
## 核心功能
### 设备识别
根据 `User-Agent``Sec-CH-UA-Mobile` 自动判断移动端/桌面端,返回对应方向的图片。你也可以手动指定:
```bash
curl https://randbg.smyhub.com/api/random?mode=mobile
```
### 响应格式
默认 `302 Redirect` 直接跳转到图片地址,浏览器里一行就能用:
```html
<img src="https://randbg.smyhub.com/api/random" />
```
加上 `?format=json` 返回元数据,方便前端自己控制加载逻辑:
```json
{
"variant": "desktop",
"folder": "desketop-image",
"filename": "7.webp",
"url": "https://randbg.smyhub.com/desketop-image/7.webp",
"count": 19
}
```
### 构建流程
写了个 `build.py`,功能单一但够用:
1. 扫描 `mobile-image/``desketop-image/` 目录
2. 用 Pillow 把原图转为编号 WebP`1.webp``2.webp`...
3. 输出到 `public/` 并生成 `manifest.json`
4. 如果已有 WebP 且没有原图,自动保留,不会误删
```bash
python3 build.py
npm run deploy
```
---
## 部署
整个部署流程是:
1. 把原图扔进 `mobile-image/``desketop-image/`
2. `python3 build.py` 转 WebP
3. `npm run deploy` 推到 Cloudflare
从改图到上线,本地测试用 `npm run dev`,本地 8787 端口就能跑。没有 Docker没有数据库没有环境变量要填。
---
如果你也需要一个零成本、不用维护的随机背景服务,可以直接 Fork 用。代码量很小,改起来不费劲。

390
Typora_Hook_Log.txt Normal file
View File

@@ -0,0 +1,390 @@
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync 重定向 D:\WindowsApp\Typora\resources\app\atom.compiled.dist.jsc --> D:\WindowsApp\Typora\resources\app.bak\atom.compiled.dist.jsc
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.openSync D:\WindowsApp\Typora\resources\app.bak\atom.compiled.dist.jsc
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\hjson\lib\hjson.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\util\assign.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\fs\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\node_modules\universalify\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\graceful-fs\graceful-fs.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\graceful-fs\polyfills.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\graceful-fs\legacy-streams.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\graceful-fs\clone.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\copy\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\copy\copy.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\copy\ncp.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\util\utimes.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\mkdirs\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\mkdirs\mkdirs.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\mkdirs\win32.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\mkdirs\mkdirs-sync.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\path-exists\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\copy-sync\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\copy-sync\copy-sync.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\copy-sync\copy-file-sync.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\util\buffer.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\remove\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\remove\rimraf.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\json\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\json\jsonfile.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\node_modules\jsonfile\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\json\output-json-sync.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\json\output-json.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\move\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\move-sync\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\empty\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\ensure\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\ensure\file.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\ensure\link.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\ensure\symlink.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\ensure\symlink-paths.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\ensure\symlink-type.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-extra\lib\output\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\electron-fetch\lib\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\electron-fetch\node_modules\encoding\lib\encoding.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\iconv-lite\lib\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\iconv-lite\node_modules\safer-buffer\safer.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\iconv-lite\lib\bom-handling.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\iconv-lite\lib\streams.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync C:\Users\smy\AppData\Roaming\Typora/conf/conf.user.json
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-plus\lib\fs-plus.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-plus\node_modules\underscore-plus\lib\underscore-plus.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-plus\node_modules\underscore\underscore-node.cjs
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-plus\node_modules\underscore\underscore-node-f.cjs
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-plus\node_modules\async\lib\async.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-plus\node_modules\mkdirp\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-plus\node_modules\rimraf\rimraf.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-plus\node_modules\glob\glob.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-plus\node_modules\fs.realpath\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-plus\node_modules\fs.realpath\old.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-plus\node_modules\minimatch\minimatch.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-plus\node_modules\brace-expansion\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-plus\node_modules\concat-map\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-plus\node_modules\balanced-match\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-plus\node_modules\inherits\inherits.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-plus\node_modules\path-is-absolute\index.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-plus\node_modules\glob\sync.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-plus\node_modules\glob\common.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-plus\node_modules\inflight\inflight.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-plus\node_modules\wrappy\wrappy.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\fs-plus\node_modules\once\once.js
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.statSync d:\windowsapp\typora\typora.exe
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.statSync D:\WINDOWSAPP\TYPORA\TYPORA.EXE
------------------
[2026/6/6 21:02:10] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/typora.log
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\lowdb\lib\main.js
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\lowdb\node_modules\lodash\lodash.js
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\lowdb\node_modules\is-promise\index.js
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\lowdb\adapters\FileSync.js
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\lowdb\adapters\Base.js
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\lowdb\adapters\_stringify.js
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync C:\Users\smy\AppData\Roaming\Typora\profile.data
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync C:\Users\smy\AppData\Roaming\Typora\history.data
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\native-reg\lib\index.js
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFile D:\WindowsApp\Typora\resources\locales\zh-Hans.lproj\Panel.json
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFile D:\WindowsApp\Typora\resources\locales\zh-Hans.lproj\Panel.json
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.statSync D:\SmyProjects\CloudFlare\CloudFlare Workers\randbg-api\BLOG.md
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFile D:\WindowsApp\Typora\resources\locales\zh-Hans.lproj\Menu.json
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\electron-progressbar\source\index.js
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFileSync D:\WindowsApp\Typora\resources\node_modules.asar\electron-progressbar\node_modules\extend\index.js
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFile D:\WindowsApp\Typora\resources\locales\zh-Hans.lproj\Menu.json
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.readFile C:\Users\smy\AppData\Roaming\Typora\typora-dictionaries/user-dict.json
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Local\Temp\Typora
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook/Promises] 程序试图 fs.promises.readFile 重定向 D:\WindowsApp\Typora\resources\app/package.json --> D:\WindowsApp\Typora\resources\app.bak\package.json
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook/Promises] 程序试图 fs.promises.readFile 重定向 D:\WindowsApp\Typora\resources\app/launch.dist.js --> D:\WindowsApp\Typora\resources\app.bak\launch.dist.js
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook/Promises] 程序试图 fs.promises.readFile 重定向 D:\WindowsApp\Typora\resources\app/../page-dist/license.html --> D:\WindowsApp\Typora\resources\app.bak\../page-dist/license.html
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook/Promises] 程序试图 fs.promises.readFile 重定向 D:\WindowsApp\Typora\resources\app/../page-dist/static/js/LicenseIndex.180dd4c7.5b58fa97.js --> D:\WindowsApp\Typora\resources\app.bak\../page-dist/static/js/LicenseIndex.180dd4c7.5b58fa97.js
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:02:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:02:41] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\draftsRecover
------------------
[2026/6/6 21:02:58] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:02:58] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:03:02] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:03:02] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:03:05] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:03:05] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:03:07] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:03:07] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:03:08] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:03:08] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:03:09] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:03:09] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:03:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:03:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:03:12] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:03:12] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:03:45] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:03:45] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:03:46] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:03:46] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:03:47] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:03:47] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:03:49] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:03:49] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:03:51] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:03:51] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:03:52] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:03:52] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:03:54] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:03:54] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:04:01] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:04:01] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:04:09] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:04:09] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:04:21] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:04:21] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:04:26] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:04:26] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:04:29] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:04:29] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:04:31] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:04:31] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:04:34] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:04:34] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:04:35] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:04:35] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:04:36] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:04:36] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:04:43] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:04:43] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:04:45] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:04:45] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:04:50] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:04:50] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:04:53] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:04:53] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:04:54] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:04:54] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:04:55] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:04:55] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:05:09] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:05:09] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:05:12] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:05:12] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:05:14] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:05:14] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:06:50] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:06:50] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:07:28] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:07:28] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:07:30] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:07:30] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:07:37] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:07:37] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:07:39] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:07:39] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:07:42] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:07:42] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:07:52] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:07:52] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:08:01] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:08:01] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:08:07] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:08:07] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:08:09] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:08:09] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:08:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:08:11] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:08:12] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:08:12] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:08:14] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:08:14] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:08:23] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.stat C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:08:23] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.open C:\Users\smy\AppData\Roaming\Typora/backups/sum
------------------
[2026/6/6 21:11:00] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.statSync C:\Users\smy\AppData\Roaming\Typora\backups
------------------
[2026/6/6 21:11:00] [Log] [&#128737;&#65039; fsHook] 程序试图 fs.statSync C:\Users\smy\AppData\Roaming\Typora/typora.log
------------------

91
optimize_webp.py Normal file
View File

@@ -0,0 +1,91 @@
#!/usr/bin/env python3
"""Re-compress existing .webp images with optimized parameters to reduce file size.
Usage:
python optimize_webp.py
Backups originals to a .bak/ folder before overwriting.
"""
from pathlib import Path
from PIL import Image
import shutil
BASE_DIR = Path(__file__).resolve().parent
PUBLIC_DIR = BASE_DIR / "public"
# Directories to optimize
TARGET_DIRS = [
PUBLIC_DIR / "mobile-image",
PUBLIC_DIR / "desketop-image",
]
# Compression parameters
QUALITY = 80
METHOD = 6
def optimize_webp(src_path: Path, backup_dir: Path) -> tuple[int, int]:
"""Re-encode a single WebP image with optimized quality settings.
Returns (original_size, new_size) in bytes.
"""
original_size = src_path.stat().st_size
backup_path = backup_dir / src_path.name
# Backup original
shutil.copy2(src_path, backup_path)
# Re-encode
img = Image.open(src_path)
# For RGB/RGBA, keep as-is; for other modes, convert to RGBA
if img.mode not in ("RGB", "RGBA"):
img = img.convert("RGBA")
img.save(src_path, format="WEBP", quality=QUALITY, method=METHOD)
new_size = src_path.stat().st_size
return original_size, new_size
def main():
total_original = 0
total_new = 0
total_files = 0
for target_dir in TARGET_DIRS:
if not target_dir.exists():
print(f"Skip: {target_dir} not found")
continue
backup_dir = target_dir.parent / (target_dir.name + ".bak")
backup_dir.mkdir(exist_ok=True)
print(f"\n[DIR] Optimizing: {target_dir}")
print("-" * 50)
for webp_file in sorted(target_dir.glob("*.webp"), key=lambda p: p.name.lower()):
original_size, new_size = optimize_webp(webp_file, backup_dir)
total_original += original_size
total_new += new_size
total_files += 1
reduction = original_size - new_size
pct = (reduction / original_size) * 100 if original_size else 0
status = "OK" if new_size < original_size else "WARN"
print(
f" [{status}] {webp_file.name:20s} "
f"{original_size/1024:8.1f} KB -> {new_size/1024:8.1f} KB "
f"(-{reduction/1024:8.1f} KB, {pct:5.1f}%)"
)
print("\n" + "=" * 60)
print(f" Total files: {total_files}")
print(f" Original size: {total_original/1024/1024:.2f} MB")
print(f" New size: {total_new/1024/1024:.2f} MB")
print(f" Saved: {(total_original - total_new)/1024/1024:.2f} MB ({(total_original - total_new)/total_original*100:.1f}%)")
print("=" * 60)
print(f"\nBackups saved to: {PUBLIC_DIR}/mobile-image.bak/ and desketop-image.bak/")
print("If quality is not acceptable, restore from backup folders.")
if __name__ == "__main__":
main()

Binary file not shown.

After

Width:  |  Height:  |  Size: 918 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 707 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 609 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 918 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 545 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 608 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 918 KiB

After

Width:  |  Height:  |  Size: 514 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 340 KiB

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 647 KiB

After

Width:  |  Height:  |  Size: 362 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 229 KiB

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 268 KiB

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 598 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 258 KiB

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 707 KiB

After

Width:  |  Height:  |  Size: 386 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 609 KiB

After

Width:  |  Height:  |  Size: 344 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 324 KiB

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 563 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 513 KiB

After

Width:  |  Height:  |  Size: 259 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 918 KiB

After

Width:  |  Height:  |  Size: 502 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 545 KiB

After

Width:  |  Height:  |  Size: 276 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 KiB

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 608 KiB

After

Width:  |  Height:  |  Size: 343 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 595 KiB

After

Width:  |  Height:  |  Size: 309 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 338 KiB

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 158 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 KiB

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 KiB

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 KiB

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 KiB

After

Width:  |  Height:  |  Size: 81 KiB