xmpkit-0.1.0 has been yanked.
XMPKit
Pure Rust implementation of Adobe XMP Toolkit
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 XmpMeta;
// Parse XMP from string
let meta = from_str?;
// Get a property
if let Some = meta.get_property
// Set a property
meta.set_property?;
// Serialize back to XMP Packet
let xmp_packet = meta.serialize;
Installation
Add to your Cargo.toml:
[]
= "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 |
| 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
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.