SVG Profiler

Profiles a Scalable Vector Graphics xml string.

Setup

brew install imagemagick inkscape
gem install svg_profiler

Usage

require "svg_profiler"

profile = SVGProfiler.new(File.read("file.svg"))

profile.dimensions
#=> [900, 600]

profile.width
#=> 900

profile.height
#=> 600

profile.aspect
#=> 1.5

# The #colors method calculates the histogram for the SVG.
profile.colors
#=> { "#FF0000" => 0.7, "#FFFFFF" => 0.29, "#000000" => 0.01 }

You may find that the SVG is antialiased before the histogram is calculated.

You can pass an optional threshold to the #colors method, to help cope with this:

profile.colors(0.02)
#=> { "#FF0000" => 0.7070707070707071, "#FFFFFF" => 0.29292929292929293 }

The sum of the values in the hash will always add up to one.

Contribution

If there's a metric you'd like to see implemented, please send a pull request or open an issue.