pngmetagrep 0.1.0

PNG tEXt metadata → NDJSON CLI — grep your image metadata
pngmetagrep-0.1.0 is not a library.

pngmetagrep

PNG tEXt metadata extractor — NDJSON output for jq pipelines.

Extracts tEXt chunks from PNG files and outputs one JSON object per line (NDJSON). No image decoding — reads only binary chunk headers for speed.

Use Cases

  • VDSL — search/aggregate vdsl recipe chunks embedded by the VDSL image generation platform
  • ComfyUI — extract prompt / workflow chunks
  • General — any arbitrary tEXt keyword

Install

cargo install pngmetagrep

Usage

# Extract vdsl chunks (default) from all PNGs under a directory
pngmetagrep ./images

# Specify chunk keywords (repeatable)
pngmetagrep ./images --chunk prompt --chunk workflow

# Regex filter on JSON output
pngmetagrep ./images -e '"seed":\s*42'

# Case-insensitive filter
pngmetagrep ./images -e 'landscape' -i

# Print matching file paths only (no JSON)
pngmetagrep ./images -e 'portrait' -l

# Limit parallel threads
pngmetagrep ./images -j 4

# Pipe to jq
pngmetagrep ./images | jq 'select(.seed == 42)'

Options

Flag Description
--chunk <KEY> tEXt keyword to extract (repeatable, default: vdsl)
-e <REGEX> Regex filter applied to serialized JSON output
-i Case-insensitive matching for -e
-l Print matching file paths only (no JSON)
-j <N> Number of parallel threads (default: CPU count)

Output Format

Single chunk whose value is a JSON object — path is merged flat:

{"path":"images/001.png","_v":1,"seed":42,"model":"sd-xl"}

Multiple chunks or non-object values — nested by keyword:

{"path":"images/002.png","prompt":{...},"workflow":{...}}

Crate Structure

Crate Role
pngmetagrep-core PNG tEXt chunk extraction library (std only, no image decoding)
pngmetagrep (CLI) Parallel CLI built on clap + rayon + walkdir

License

MIT