xmpkit 0.1.1

Pure Rust implementation of Adobe XMP Toolkit
Documentation

XMPKit

Pure Rust implementation of Adobe XMP Toolkit

Crates.io MIT licensed Apache licensed, Version 2.0 Build Status

Overview

XMPKit is a pure Rust implementation of Adobe's XMP (Extensible Metadata Platform) Toolkit. It provides APIs for reading, writing, and manipulating XMP metadata in various file formats without any C++ dependencies.

Features

  • Pure Rust implementation (no C++ dependencies)
  • Compatible with Adobe XMP standard
  • Support for common file formats (JPEG, PNG, TIFF, etc.)
  • Memory safe and high performance
  • Zero-cost abstractions
  • Cross-platform support (iOS, Android, HarmonyOS, macOS, Windows, Linux, Wasm)

Quick Start

use xmpkit::XmpMeta;

// Parse XMP from string
let meta = XmpMeta::from_str(xmp_str)?;

// Get a property
if let Some(value) = meta.get_property("http://ns.adobe.com/xap/1.0/", "CreatorTool") {
    println!("Creator: {}", value);
}

// Set a property
meta.set_property("http://ns.adobe.com/xap/1.0/", "CreatorTool", "MyApp")?;

// Serialize back to XMP Packet
let xmp_packet = meta.serialize();

Installation

Add to your Cargo.toml:

[dependencies]
xmpkit = "0.1.0"

Documentation

Full API documentation is available at docs.rs/xmpkit.

For WebAssembly/JavaScript integration, see WASM_JAVASCRIPT.md.

Project Status

File Format Support

Format Extensions Read XMP Write XMP Status
JPEG .jpg, .jpeg Yes Yes Fully supported
PNG .png Yes Yes Fully supported
TIFF .tif, .tiff Yes Yes Fully supported
MP3 .mp3 Yes Yes Fully supported
GIF .gif Yes Yes Fully supported
MP4 .mp4 Yes Yes Fully supported
PDF .pdf No No Planned
WebP .webp No No Planned

Platform Support

Platform Architecture File I/O Memory I/O Status
Native Platforms
macOS x86_64, arm64 Yes Yes Fully supported
Linux x86_64, arm64 Yes Yes Fully supported
Windows x86_64, arm64 Yes Yes Fully supported
iOS arm64 Yes Yes Fully supported
Android arm64, armv7, x86_64 Yes Yes Fully supported
HarmonyOS arm64, armv7, x86_64 Yes Yes Fully supported (use ohos feature for Node-API bindings)
Web Platforms
WebAssembly wasm32 No Yes Partial (use from_bytes() / from_reader(), see WASM_WEBASSEMBLY)

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

License

This project is licensed under either of

at your option.

References