Skip to content

Complete EXIF/metadata management tool with CLI and GUI interfaces for privacy-focused image processing

Notifications You must be signed in to change notification settings

BentWorks/ExifAnalyzer

Repository files navigation

ExifAnalyzer

πŸ”’ Privacy-First Image Metadata Tool βœ… v1.0.0-beta - Production Ready

A complete, cross-platform utility for viewing and stripping metadata from image files. Features both CLI and GUI interfaces for privacy-focused image processing. Ready-to-use Windows executables included - no installation required!

✨ Features

  • πŸ” Metadata Viewing: Comprehensive EXIF, IPTC, and XMP data display
  • 🧹 Privacy Protection: Remove all metadata or GPS/location data only
  • πŸ“ Batch Processing: Process multiple files and directories
  • πŸ’Ύ Safe Operations: Automatic backups with pixel data integrity verification
  • πŸ–₯️ Dual Interface: Command-line tool and user-friendly GUI
  • πŸ“¦ Ready-to-Run: Windows executables included, no installation needed
  • πŸƒ Fast & Lightweight: Instant processing for typical images
  • πŸ”’ Privacy-First: Local processing only, no network connectivity

πŸš€ Quick Start

Ready-to-Use Executables (Windows)

Download the latest release and extract the zip file:

  • ExifAnalyzer-GUI.exe - User-friendly graphical interface
  • ExifAnalyzer-CLI.exe - Command-line interface

GUI Usage

# Run the GUI
ExifAnalyzer-GUI.exe

# 1. Click "File" to select an image
# 2. View metadata in the tree display
# 3. Use "Strip All Metadata" or "Strip GPS Only" buttons
# 4. Privacy warnings highlight sensitive data in red

CLI Usage

# View metadata from an image
ExifAnalyzer-CLI.exe view image.jpg

# Strip all metadata
ExifAnalyzer-CLI.exe strip image.jpg

# Remove only GPS/location data
ExifAnalyzer-CLI.exe strip --gps-only image.jpg

# Batch process multiple files
ExifAnalyzer-CLI.exe strip *.jpg

# Get help
ExifAnalyzer-CLI.exe --help

Development Installation

git clone https://github.com/BentWorks/ExifAnalyzer.git
cd ExifAnalyzer
pip install -r requirements.txt
python cli_launcher.py --help  # CLI
python gui_launcher.py          # GUI

πŸ“‹ Supported Formats

Format View Strip Notes
JPEG βœ… βœ… Complete EXIF, IPTC, XMP support
PNG βœ… βœ… Text chunks and XMP metadata
TIFF 🚧 🚧 Planned for v1.1
WebP 🚧 🚧 Planned for v1.1

πŸ—οΈ Architecture

ExifAnalyzer uses a modular architecture with format-specific adapters:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   CLI/GUI       │────│  Metadata Engine │────│  File Safety    β”‚
β”‚   Interface     β”‚    β”‚   Orchestrator   β”‚    β”‚   Manager       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β”‚
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚         β”‚         β”‚
             β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β” β”Œβ”€β”€β”€β–Όβ”€β”€β”€β”€β” β”Œβ”€β”€β–Όβ”€β”€β”€β”€β”€β”
             β”‚  JPEG    β”‚ β”‚  PNG   β”‚ β”‚ Future β”‚
             β”‚ Adapter  β”‚ β”‚Adapter β”‚ β”‚Adaptersβ”‚
             β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Core Components

  • MetadataEngine: Central orchestrator that routes operations to format-specific adapters
  • BaseMetadataAdapter: Abstract interface ensuring consistent behavior across formats
  • ImageMetadata: Unified metadata structure with privacy-aware operations
  • FileSafetyManager: Handles backups, integrity verification, and atomic operations

πŸ›‘οΈ Privacy & Security

ExifAnalyzer is designed with privacy as a core principle:

  • πŸ”’ Local Processing Only: No cloud connectivity or data transmission
  • πŸ” GPS Detection: Automatically identifies and removes location data
  • πŸ“± Device Anonymization: Strips camera make, model, and serial numbers
  • πŸ” Privacy Audit: Lists all privacy-sensitive metadata before removal
  • βœ… Integrity Verification: Ensures pixel data remains unchanged

Privacy-Sensitive Data Detected

  • GPS coordinates and altitude
  • Camera make, model, serial numbers
  • Software and lens information
  • User names and copyright info
  • Creation locations and addresses

πŸ”§ Development

Project Structure

ExifAnalyzer/
β”œβ”€β”€ src/exif_analyzer/          # Main source code
β”‚   β”œβ”€β”€ core/                   # Core metadata engine
β”‚   β”œβ”€β”€ adapters/               # Format-specific handlers
β”‚   β”œβ”€β”€ cli/                    # Command-line interface
β”‚   └── gui/                    # GUI interface (planned)
β”œβ”€β”€ tests/                      # Test suite
β”œβ”€β”€ docs/                       # Documentation
└── examples/                   # Usage examples

Running Tests

# Run all tests
python -m pytest tests/ -v

# Run with coverage
python -m pytest tests/ --cov=src/exif_analyzer --cov-report=html

# Run specific test file
python -m pytest tests/test_jpeg_adapter.py -v

Code Quality

# Format code
python -m black src/ tests/

# Lint code
python -m flake8 src/ tests/

# Type checking
python -m mypy src/

πŸ“Š Project Status

βœ… v1.0.0-beta Released (Production Ready)

Complete Implementation:

  • Full CLI interface with all commands
  • Complete GUI interface with file browser
  • JPEG metadata handling (EXIF, IPTC, XMP)
  • PNG metadata handling (text chunks, XMP)
  • Privacy-focused GPS/location detection
  • Safe file operations with automatic backups
  • Windows executables (32MB each, self-contained)
  • Comprehensive test suite (116 tests, 67% coverage)
  • Complete documentation and user guides

Key Achievements:

  • File Safety: 94% test coverage for critical operations
  • Zero Installation: Ready-to-run Windows executables
  • Production Quality: Handles real-world image processing safely
  • User-Friendly: Both technical CLI and intuitive GUI interfaces

πŸš€ What's Next

  • v1.1: Additional format support (TIFF, WebP)
  • v1.2: Cross-platform executables (macOS, Linux)
  • v1.3: Advanced batch processing features

🀝 Contributing

We welcome contributions! Please see our Contributing Guidelines for details.

Development Setup

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Add tests for new functionality
  5. Ensure all tests pass (python -m pytest)
  6. Format code (python -m black src/ tests/)
  7. Commit changes (git commit -m 'Add amazing feature')
  8. Push to branch (git push origin feature/amazing-feature)
  9. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • PIL (Pillow): Core image processing capabilities
  • piexif: Comprehensive EXIF metadata handling
  • python-xmp-toolkit: XMP metadata support
  • Click: Elegant command-line interface framework
  • PySimpleGUI: Simple and powerful GUI framework

πŸ“ž Support


⚠️ Important: Always backup your images before performing metadata operations. While ExifAnalyzer includes safety mechanisms, it's good practice to keep original copies of important files.

πŸ”’ Privacy Note: This tool is designed to enhance your privacy by removing metadata from images. However, always verify that sensitive data has been completely removed before sharing images publicly.

About

Complete EXIF/metadata management tool with CLI and GUI interfaces for privacy-focused image processing

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages