# PNG Metadata Editor v2.3.0 A graphical tool for viewing and editing metadata in PNG files with an intuitive image browser interface. ![PNG Metadata Editor Screenshot](screenshot.png) ## Features ### Core Features - View all metadata fields (tEXt, zTXt, iTXt chunks) in PNG files - Add, edit, and delete metadata fields - Copy metadata values to clipboard - Visual indication of unsaved changes - Pretty-print JSON values in editor (auto-flattens on save) ### Image Browser - Browse directories with thumbnail previews - Auto-scroll to selected images - Trackpad and mousewheel scrolling support - Smooth navigation between multiple files ### User Interface - Automatic dark mode detection (macOS, Windows, Linux) - Adaptive canvas background based on system theme - Unicode support throughout UI - Resizable panes for optimal workflow ### Technical Improvements - Smart JSON handling: displays formatted, saves flattened - Proper file handle management for reliable multi-file loading - Enhanced scroll region updates for smooth browsing ## Installation ### Prerequisites - Python 3.6+ - Tkinter (usually included with Python) ### Dependencies Install required packages using pip: ```bash pip install pillow ``` ## Usage ### Basic Workflow 1. Run the application: ```bash python png-meta-editor.py ``` 2. **Browse Directory**: Click "Browse Directory" to load thumbnails from a folder 3. **Select Image**: Click any thumbnail to load its metadata 4. **View Metadata**: See all fields in the tree view with preview 5. **Edit Fields**: - Double-click or use "Edit Field" to modify values - JSON values display formatted but save flattened 6. **Save Changes**: Click "Save Changes" to write metadata back to file ### Keyboard Shortcuts - **Double-click** on tree item to edit - **Enter/Escape** in dialogs to confirm/cancel ### Dark Mode The application automatically detects your system theme: - **macOS**: Reads `AppleInterfaceStyle` setting - **Windows**: Reads personalization registry settings - **Linux**: Checks GTK theme preferences ## Building for Distribution ### Using build.py (Recommended) 1. First install the required build tools: ```bash pip install pyinstaller ``` 2. Build the application for your platform: ```bash python build.py ``` 3. The resulting executable will be in the `dist/` directory ### Manual PyInstaller Commands #### Windows ```bash pyinstaller --name="PNG Metadata Editor" \ --windowed \ --onefile \ --icon=AppIcon.ico \ --version-file version.txt \ png-meta-editor.py ``` #### macOS ```bash pyinstaller --name="PNG Metadata Editor" \ --windowed \ --onefile \ --icon=AppIcon.icns \ --version-file version.txt \ png-meta-editor.py ``` #### Linux ```bash pyinstaller --name="PNG Metadata Editor" \ --windowed \ --onefile \ png-meta-editor.py ``` ## Required Files For building, you'll need: - `version.txt` (for version information) - `AppIcon.ico` (Windows icon) - `AppIcon.icns` (Mac icon) - `requirements.txt` (for dependencies) ## Technical Details ### JSON Handling The editor intelligently handles JSON metadata: - **Display**: Pretty-printed with indentation for readability - **Storage**: Automatically flattened to single line to preserve original format - **Example**: ```json // What you see in editor: { "prompt": "a cat", "steps": 20 } // What gets saved: {"prompt":"a cat","steps":20} ``` ### File Management - Proper file handle release after reading metadata - Supports loading multiple files sequentially without issues - Thumbnail caching for smooth browsing experience ## License This project is licensed under the MIT License - see [LICENSE](LICENSE) for details. ## Author Robert Tusa robert@tusa.at ## Version History ### v2.3.0 (2026-01-07) - Major UI Update - Added image browser with thumbnail previews - Implemented dark mode detection for all platforms - Added trackpad/mousewheel scrolling support - Smart JSON flattening (preserves original format) - Fixed file loading issues with proper handle management - Enhanced scroll region updates - Unicode support in UI elements ### v1.0.0 (2026-01-05) - Initial Release - Basic metadata viewing and editing - Tree view with detail pane - Add, edit, delete operations - JSON pretty-printing