Home

Awesome

xmp - Extensible Metadata Platform (XMP) parser

XMP provides an object oriented interface to XMP data. XMP data can be found in PDF, JPEG, GIF, PNG, and many other formats.

Supported Formats

FormatFile extensionAdditional dependency
JPEG.jpeg, .jpgexifr/jpeg
TIFF.tiff, .tifexifr/tiff
XMP Files.xmp, .xmlnone

Usage

require 'xmp'
xmp = XMP.new('example.jpg')
xmp.dc.subject # => ["something interesting"]

xmp.namespaces.each do |namespace|
  xmp[namespace].attributes.each do |attribute|
    puts "#{namespace}.#{attribute}: #{xmp[namespace][attribute].inspect}"
  end
end

XMP.new accepts:

Attributes can be accessed in the following ways:

# assuming an XMP entry AttributeName within the NamespaceName namespace, these are all equivalent
xmp['NamespaceName']['AttributeName']
xmp.namespace_name.attribute_name
xmp.NamespaceName.AttributeName

# you can also mix them
xmp.namespace_name['AttributeName']

# or convert the data to an actual hash
xmp.to_h # => { 'NamespaceName' => { … }, … }

Installation

$ gem install xmp
$ gem install exifr # optional, for jpeg/tiff support

Or you can add it to your Gemfile:

gem 'xmp',   '~> 1.0'
gem 'exifr', '~> 1.3'

Requirements

Development

Fork it at https://github.com/amberbit/xmp

$ bundle install # install development dependencies
$ rake spec      # run specs

License

Ruby's license.

Copyright (c) 2011 Wojciech Piekutowski, AmberBit (http://amberbit.com) and contributors.