miyakejima/boundary-lock-studio

GitHub: miyakejima/boundary-lock-studio

一款本地浏览器端工具,用于设计在桌面端和 Android 端像素级完美对齐的 X 个人资料图片与横幅。

Stars: 0 | Forks: 0

# Boundary Lock Studio **本地 · 确定性 · 无 AI** 一个基于浏览器的工具室,用于构建像素级完美的 X (Twitter) 个人资料图片和横幅,使其在桌面端和 Android 上都能完美对齐。所有操作都在你的机器上运行。没有上传。没有 API 调用。没有生成式 AI。 ## 截图 **完整的工作室 UI —— 源面板、实时预览、优先级和延续控制** ![完整 UI](https://static.pigsec.cn/wp-content/uploads/repos/cas/39/399f3ae42209a4f787bc52ad000c08d2c12a45ce478ff5245dac5551e41404e8.png) **桌面端 Web 预览 —— 1500 × 500 横幅,带有 400 × 400 个人资料覆盖** ![桌面端预览](https://static.pigsec.cn/wp-content/uploads/repos/cas/7a/7a16911aaa0b6205be03ad7251f35adf18248da509a1ea256540354090cffa65.png) **Android 应用预览 —— 针对 X Android 12.2 验证的像素级精确头像位置** ![Android 预览](https://static.pigsec.cn/wp-content/uploads/repos/cas/7d/7d29f594d964154362857a94885059b6ba6119f64cfbd35e15cc12d8b8bccebf.png) ## 为什么开发这个工具 X 的桌面端和 Android 应用将头像圆圈放置在横幅上稍微不同的位置。一个在桌面端看起来对齐的横幅,在 Android 上可能会显示出不匹配的裁剪 —— 反之亦然。Boundary Lock Studio 使用经过 X Android APK 验证的几何结构(Jetpack Compose 布局常量、dp 到像素的转换,以及 JPEG 上传扁平化行为)同时渲染两个预览,因此你可以在上传任何内容之前看到确切的结果。 ## 快速开始 **无需 npm install。无需构建步骤。** 只需双击 `launch.bat`。 ``` launch.bat ``` 启动器会自动检测 Python 或 Node.js,选择一个可用端口,并在你的浏览器中打开工作室。使用该工具时请保持终端窗口打开。 **要求:** Python 3 _或_ Node.js —— 任意一个即可。 ## 工作流程 ### 设置个人资料 → 构建横幅 *(推荐)* 镜像原生 X 个人资料图片流程: 1. 点击 **选择个人资料图片** 并选择一张图像。 2. 在 X 风格的方形裁剪窗口内重新定位并缩放图像。 3. 点击 **应用** —— 个人资料被锁定。 4. 1500 × 500 横幅会根据锁定的裁剪自动重建。 5. 导出两个文件。 锁定的个人资料定义了一个单一的全局源变换。它会均匀地应用于每一个横幅像素 —— 没有独立的横幅裁剪、圆形校正、混合或局部扭曲。如果该变换没有覆盖整个横幅区域,工作室会报告间隙,并使用所选的背景色填充。 ### 横幅 → 个人资料 *(原始模式)* 对于从横幅开始的项目: 1. 选择 **横幅 → 个人资料**。 2. 上传横幅并使用横幅工具进行调整。 3. 选择桌面端、Android 或共享布局。 4. 导出生成的个人资料和调整后的横幅。 ## 布局模式 | 模式 | 描述 | |---|---| | **最佳共享** *(推荐)* | 一种折中的对齐方式,在桌面端和 Android 上都能获得可接受的效果 | | **移动端完美** | 精确瞄准 Android 布局;桌面端可能略有偏差 | | **桌面端精确** | 精确瞄准桌面端布局;Android 可能略有偏差 | 桌面端和 Android 优先级控制可在“横幅 → 个人资料”模式下使用。它们在“设置个人资料”模式下被隐藏,以便编辑器表现得像原生的 X 流程。 ## 输出 | 文件 | 尺寸 | 格式 | |---|---|---| | 个人资料图片 | 400 × 400 | PNG | | 横幅 | 1500 × 500 | PNG | 导出的文件使用上传的源文件名,后跟 `-profile.png` 和 `-banner.png`。 ## 缺失区域延续 当源图像没有覆盖整个横幅宽度时,工作室可以通过检测穿过边界的直线特征(线条、边框、几何形状)并将其延伸到未覆盖区域,来推断横幅边缘。检测灵敏度是可调的。 ## Android 几何结构 Android 预览使用从 X Android Jetpack Compose 个人资料头部(`com.x.profile.header` / `UserProfileHeaderUi.kt`)提取的布局常量,并已针对以下版本验证: - `12.1.1-release.0` (`versionCode 312011000`) - `12.2.0-release.0` (`versionCode 312020000`) 活动常量(X 12.2 Compose 路径): | 属性 | 值 | |---|---| | 横幅纵横比 | 3.0 | | 头像图像尺寸 | 80 dp | | 个人资料水平内边距 | 12 dp | | 横幅下方布局预留 | 60 dp | | 可见的头像重叠 | 28 dp | 有关完整的几何推导、像素级验证结果和版本控制说明,请参阅 [`ANDROID_REVERSE_ENGINEERING.md`](ANDROID_REVERSE_ENGINEERING.md)。 ## 自动化测试 安装 Node.js 后: ``` node core.test.mjs ``` 测试套件涵盖:个人资料锁定、安全取消、仅应用个人资料替换、自动横幅重建、全圆源所有权,以及原始的横幅衍生渲染路径。 附加集成测试: ``` node shared-mode-test.mjs node desktop-priority-shared-test.mjs node joint-adjustment-test.mjs node test-pair-aware.mjs node warp-test.mjs ``` ## 项目结构 ``` boundary-lock-studio/ ├── index.html # Studio web interface ├── app.js # UI application logic ├── core.js # Geometry engine and canvas rendering ├── styles.css # UI styles ├── server.js # Minimal Node.js static server ├── launch.bat # Windows one-click launcher (Python or Node.js) ├── core.test.mjs # Main unit test suite ├── shared-mode-test.mjs # Best Shared mode integration tests ├── desktop-priority-shared-test.mjs # Desktop priority integration tests ├── joint-adjustment-test.mjs # Multi-pass adjustment tests ├── test-pair-aware.mjs # Pair-aware banner integration tests ├── warp-test.mjs # Coordinate warp tests ├── weight-sweep.mjs # Parameter sweep diagnostic ├── overlap-analysis.mjs # Boundary overlap diagnostic ├── ANDROID_REVERSE_ENGINEERING.md # Android geometry derivation and verification ├── VERIFICATION.md # Implementation evidence and QA log └── docs/screenshots/ # UI screenshots ``` ## 许可证 ISC
标签:MITM代理, UI设计, X/Twitter, 像素级布局, 前端工具, 图像处理, 多模态安全, 数据可视化, 本地工具, 自定义脚本, 逆向工具