Metadata-Version: 2.4
Name: photo-metaclean
Version: 1.1.0
Summary: Remove hidden EXIF/GPS metadata from JPEG/PNG at the byte level — no re-encoding, no quality loss.
Author: Danilo Fortunato
License-Expression: MIT
Project-URL: Homepage, https://danyblitz-bit.github.io/photo-metaclean/
Project-URL: Repository, https://github.com/danyblitz-bit/photo-metaclean
Project-URL: Bug Tracker, https://github.com/danyblitz-bit/photo-metaclean/issues
Keywords: exif,gps,metadata,privacy,jpeg,png,strip,cli
Classifier: Programming Language :: Python :: 3
Classifier: Environment :: Console
Classifier: Topic :: Multimedia :: Graphics
Classifier: Topic :: Security
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: End Users/Desktop
Requires-Python: >=3.9
Description-Content-Type: text/markdown

# Photo MetaClean

Remove sensitive metadata from JPEG and PNG images before you share them. One command, three modes.

## Why

Every photo taken with a smartphone quietly carries **GPS coordinates, camera model, software and exact timestamps** in EXIF. When you email it, upload it to a client portal, or post it publicly, that data travels with the file — a geotag can reveal your home, your office, or a private shoot location. Photo MetaClean strips it at the byte level: no re-encode, no quality loss, no cloud upload.

## Install & Run

Zero dependencies — Python standard library only.

```bash
# Inspect what's hidden in an image
python -m tools.photo-metaclean photo.jpg

# See the full metadata list (GPS, camera, timestamps)
python -m tools.photo-metaclean photo.jpg --verbose

# Write a sanitized copy
python -m tools.photo-metaclean photo.jpg --clean
# -> photo_clean.jpg

# Overwrite the original
python -m tools.photo-metaclean photo.jpg --in-place

# Verify the tool works on your machine
python -m tools.photo-metaclean --self-check
```

Works with multiple files at once: `python -m tools.photo-metaclean *.jpg --clean`.

## Options

| Flag | Description |
|------|-------------|
| `--clean` | Write cleaned copy as `<name>_clean.<ext>` |
| `--in-place` | Overwrite the original file after cleaning |
| `--verbose` | List all metadata found before cleaning |
| `--self-check` | Run a built-in correctness test |

## Why the byte-level strip

Most editors "remove metadata" by re-encoding the image — losing quality and, in some cases, leaving thumbnail or maker-note residue. Photo MetaClean rewrites the JPEG/PNG container and **drops the metadata segments themselves**:

- **JPEG**: APP1 (EXIF and XMP), APP13 (IPTC/Photoshop) and COM comments. JFIF, ICC color profile and Adobe APP14 are preserved. Pixel data (SOF/SOS/entropy) is copied byte-for-byte.
- **PNG**: `tEXt`, `zTXt`, `iTXt`, `tIME` and `eXIf` chunks removed. Image data (`IDAT`) untouched.

No re-encode — an 8 MB photo stays an 8 MB photo, only lighter in data.

## Support the Project

Photo MetaClean is free and open source. Like it?

- [Get your site audited — €49](https://danyblitz.gumroad.com/l/jsuyla) — I run the audit and send you the fixes
- [Buy me a coffee](https://danyblitz.gumroad.com/l/hrvpiu) — one-time support

## Report a bug

Found a bug or something weird? Run:

```bash
python -m tools.photo-metaclean --report
```

This opens a pre-filled email. Send it and I'll get notified automatically.

You can also email **danyblitz@googlemail.com** directly. Use the subject format:

```
[TOOL-REPORT] photo-metaclean <what happened>
```

Attach the image or log output if you have one.

## License

MIT
