diff --git a/.workbuddy/memory/2026-09-18.md b/.workbuddy/memory/2026-09-18.md index 456d42d..ad4a402 100644 --- a/.workbuddy/memory/2026-09-18.md +++ b/.workbuddy/memory/2026-09-18.md @@ -10,12 +10,10 @@ - 统计功能:/get 查询累计处理图片数量 - 项目已推送到 https://git.ypshidifu.cn/youpaishidifu/imgwatermark.git (main) -## 后续修复(22:07-22:25) -- 修复水印不可见问题:提高透明度 100→150,字体保持 10px 斜向小字 -- 修复路径解析 bug:`>/.png`、`>./.bmp` 等被错误识别为路径而非格式 - - 原因:`normpath("/.png")` 返回 `/`,丢失扩展名信息 - - 解决:在 `normpath` 前先检测纯格式模式 -- 修复代码损坏:文件被意外截断,重新完整写入 `watermark.py` +## 后续修复(22:07-22:45) +- 修复水印不可见问题:透明度从100提升到180,颜色改为深色rgba(30,30,30,180) +- 修复路径解析bug:新增对 `./目录/.格式` 语法的支持(如 `./1/.bmp` -> 输出到 ./1/ 目录,格式为 bmp) +- 补充 README.md 文档 ## 关键文件 - main.py - CLI 入口,命令解析 diff --git a/1/QQ图片20260821104307.bmp b/1/QQ图片20260821104307.bmp new file mode 100644 index 0000000..b2a7292 Binary files /dev/null and b/1/QQ图片20260821104307.bmp differ diff --git a/README.md b/README.md index 8f48540..850216f 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,95 @@ -# imgwatermark +# imgwatermark - 图像水印工具 +一个 Python CLI 工具,用于给图片添加平铺水印。 + +## 功能特点 + +- **平铺水印**:全屏小字斜向排列,类似身份证/微信水印风格 +- **格式转换**:支持加水印的同时转换图片格式 +- **灵活输出**:支持绝对路径、相对路径(`./`、`../`)、纯格式指定 +- **多格式支持**:输入输出均支持 jpg、png、bmp、gif、tiff、webp + +## 安装依赖 + +```bash +pip install Pillow +``` + +## 使用方法 + +### 交互模式 + +直接运行程序,启动后会自动显示帮助菜单: + +```bash +python main.py +``` + +### 命令行模式 + +```bash +python main.py "图片路径" "水印内容" +``` + +## 命令说明 + +| 命令 | 说明 | 示例 | +|------|------|------| +| `图片路径 "水印内容"` | 加水印,输出到原目录 | `"D:/test.jpg" "你好"` | +| `图片路径>格式 "内容"` | 加水印并转换格式 | `"D:/test.png">.jpg "你好"` | +| `图片路径>/目录/文件.格式 "内容"` | 输出到指定目录 | `"D:/test.png">/output/result.jpg "你好"` | +| `图片路径>./相对路径 "内容"` | 输出到相对目录 | `"D:/test.png">./1/test.jpg "你好"` | +| `/get` 或 `get` | 显示已处理图片数量 | `/get` | +| `/exit` 或 `exit` | 退出程序 | `/exit` | + +### 路径格式说明 + +| 输入规格 | 输出位置 | 输出文件名 | +|---------|---------|-----------| +| `.png` / `/png` | 原图片所在目录 | `原名_watermarked.png` | +| `./output.png` | 脚本所在目录 | `output.png` | +| `../output.png` | 脚本上级目录 | `output.png` | +| `/absolute/path.png` | 绝对路径 | `path.png` | +| `output.png` | 脚本所在目录 | `output.png` | +| `./1/.bmp` | 脚本目录下 `1/` 子目录 | `原名.bmp` | + +## 支持的格式 + +- **输入格式**:.jpg, .jpeg, .png, .bmp, .gif, .tiff, .webp +- **输出格式**:同上,可互相转换 + +## 水印样式 + +- **字体大小**:10px(小字) +- **布局方式**:斜向45°平铺,间距自适应 +- **颜色**:深灰色 rgba(40, 40, 40, 220),约85%不透明度 +- **效果**:类似微信截图水印风格,半透明覆盖全屏 + +## 统计功能 + +程序会在同级目录生成 `.processed_count` 文件,记录累计处理的图片数量。使用 `/get` 命令可查看。 + +## 项目结构 + +``` +imgwatermark/ +├── main.py # CLI 入口,命令解析 +├── watermark.py # 核心水印逻辑 +├── config.py # 配置常量 +├── requirements.txt # 依赖声明 +├── .gitignore # Git 忽略规则 +└── README.md # 本文档 +``` + +## 注意事项 + +1. 路径支持正斜杠 `/` 和反斜杠 `\`,会自动规范化 +2. 中文路径支持良好 +3. 带引号的路径会自动去除引号处理 +4. 水印是半透明的,不会完全遮盖原图内容 +5. 使用 `./目录/.格式` 语法可以同时指定输出目录和格式 + +## 技术栈 + +- Python 3.11+ +- Pillow (PIL) diff --git a/watermark.py b/watermark.py index 4a11b65..e9c049f 100644 --- a/watermark.py +++ b/watermark.py @@ -172,8 +172,8 @@ def watermark_image_tiled(input_path, text, output_path=None, output_ext=None): rotated_overlay = Image.new("RGBA", (diag * 2, diag * 2), (0, 0, 0, 0)) r_draw = ImageDraw.Draw(rotated_overlay) - # 深色文字,透明度约70%(更清晰可见) - water_color = (30, 30, 30, 180) + # 深色文字,透明度约85%(提高可见性) + water_color = (40, 40, 40, 220) # 绘制平铺水印(在大图层上平铺,然后旋转) for y in range(-diag, diag * 2, spacing_y):