# PRD: WatermarkWizard - AI-Powered Intelligent Image Processor --- ## 1. Project Vision WatermarkWizard is a high-performance desktop application built with **Tauri + Vue3**. It solves the problem of "watermark collision" by using smart algorithms to place new watermarks in non-obstructed areas. It also leverages local AI Inpainting to remove existing text-based watermarks. --- ## 2. Technical Stack & Constraints - **Frontend**: Vue 3 (Composition API), Vite, Pinia, TypeScript, Tailwind CSS. - **Backend**: Rust (Tauri 2.0), `image` crate, `rayon` (Parallelism), `ort` (ONNX Runtime). - **Package Manager**: `pnpm`. - **Target OS**: Windows, macOS (Universal execution, local-first). --- ## 3. Key Technical Solutions ### 3.1 High-Performance Local Image Preview To display local images without the overhead of Base64 encoding, the system utilizes the **Tauri Asset Protocol**. **Security Configuration (`tauri.conf.json`):** ```json { "tauri": { "security": { "csp": "default-src 'self'; img-src 'self' asset: [https://asset.localhost](https://asset.localhost)", "assetProtocol": { "enable": true, "scope": ["**"] } } } } ``` **Frontend Implementation:** Using `@tauri-apps/api/core`, we convert absolute system paths into browser-safe URLs: ```typescript import { convertFileSrc } from '@tauri-apps/api/core'; const previewUrl = convertFileSrc('/path/to/image.jpg'); ``` ### 3.2 Smart Placement: "Zone Complexity Analysis" (ZCA) To avoid overlapping existing logos or AI software watermarks, the system implements a **Standard Deviation of Luma** algorithm. **The Algorithm Logic:** 1. **Segmentation**: Divide the bottom 20% of the image into three zones: **Left**, **Center**, and **Right**. 2. **Luma Calculation**: Convert pixels to grayscale () using: 3. **Variance Assessment**: Calculate the Standard Deviation () for each zone: 4. **Decision**: The zone with the **lowest ** (the most uniform area) is selected as the optimal anchor. --- ## 4. User Interface & Interaction Design ### 4.1 "Hero-Strip" Layout Designed for professional workflows, mimicking high-end photo editing software. #### A. Hero View (Main Editor) * **Large Dynamic Preview**: Displays the currently selected image with a CSS-based watermark overlay. * **Real-time Interaction**: Users can drag the watermark within the Hero View. The position is stored as a **Percentage Coordinate** () to ensure resolution independence during export. * **Quick Switch**: Lateral floating buttons and arrow key support for rapid navigation. #### B. Thumbnail Strip (Gallery) * **Horizontal Virtual List**: Powered by `vue-virtual-scroller` to handle 5,000+ images at 60fps. * **Lazy Loading**: High-res images are only fetched for the Hero View; the gallery uses lightweight cached thumbnails generated by the Rust backend. --- ## 5. Functional Requirements ### 5.1 Intelligent Batch Watermarking * **Requirement**: Apply a consistent watermark across diverse image sets without manual positioning for every file. * **Smart Logic**: Default to the ZCA-calculated position. If the user manually moves a watermark on one image, provide a "Sync to All" option to override the algorithm for the entire batch. ### 5.2 AI-Powered Watermark Removal * **Requirement**: Eliminate existing text watermarks without "blurring" artifacts. * **Logic**: 1. **Text Detection**: OCR (via ONNX) generates bounding boxes for characters. 2. **Local Inpainting**: The **LaMa (Large Mask Inpainting)** model brain-fills the background textures based on surrounding context. * **Manual Refinement**: A brush tool in the Hero View allows users to "paint" over stubborn artifacts for re-processing. --- ## 6. Performance & Security Optimization * **Parallel Processing**: Image compositing is handled by `rayon`, distributing tasks across all available CPU threads. * **Zero-Cloud Policy**: All AI models (OCR and Inpainting) run locally via `ort` (ONNX Runtime), ensuring user privacy and offline capability. * **Thumbnail Pre-gen**: Upon folder selection, Rust triggers a background thread to generate 300px thumbnails in the system's temp directory. --- ## 7. API & Command Architecture (Rust) | Command | Payload | Description | | --- | --- | --- | | `scan_dir` | `path: String` | Recursively scans folder and generates initial metadata/thumbnails. | | `get_zca_suggestion` | `path: String` | Performs Zone Complexity Analysis on a specific file. | | `run_inpainting` | `img: Path, mask: Mask` | Executes the LaMa ONNX model on a masked region. | | `export_batch` | `tasks: Vec` | High-speed parallel export using Rust `image` crate. | --- ## 8. Development Roadmap 1. **Phase 1**: Core architecture setup (Tauri + Asset Protocol + Pinia Store). 2. **Phase 2**: Implementation of ZCA Algorithm in Rust and the Hero-Strip UI. 3. **Phase 3**: Integration of ONNX Runtime for LaMa Inpainting. 4. **Phase 4**: Parallel batch export and performance profiling.