Image::Info::SVG - SVG support for Image::Info
use Image::Info qw(image_info dim);
my $info = image_info("image.svg");
if (my $error = $info->{error}) {
die "Can't parse image info: $error\n";
}
my $title = $info->{SVG_Title};
my($w, $h) = dim($info);
This modules supplies the standard key names except for
BitsPerSample, Compression, Gamma, Interlace, LastModificationTime, as well as:
- ImageDescription
-
The image description, corresponds to <desc>.
- SVG_Image
-
A scalar or reference to an array of scalars containing the URI's of
embedded images (JPG or PNG) that are embedded in the image.
- SVG_StandAlone
-
Whether or not the image is standalone.
- SVG_Title
-
The image title, corresponds to <title>
- SVG_Version
-
The URI of the DTD the image conforms to.
$info->process_file($source, $options);
Processes one file and sets the found info fields in the $info object.
This module requires either the XML::LibXML::Reader manpage or the XML::Simple manpage.
Previous versions (until Image-Info-1.28) used the XML::Simple manpage as the
underlying parser. Since Image-Info-1.29 the default parser is
the XML::LibXML::Reader manpage which is much more faster, memory-efficient,
and does not rely on regular expressions for some aspects of XML
parsing. If for some reason you need the old parser, you can force it
by setting the variable @Image::Info::SVG::PREFER_MODULE as early
as possible:
use Image::Info;
@Image::Info::SVG::PREFER_MODULE = qw(Image::Info::SVG::XMLSimple Image::Info::SVG::XMLLibXMLReader);
The variable $Image::Info::SVG::USING_MODULE can be queried to see
which parser is in use (after Image::Info::SVG is required).
Since 1.38_50 processing of XML external entities (XXE) is not done
anymore for security reasons in both backends
(Image::Info::SVG::XMLLibXMLReader and
Image::Info::SVG::XMLSimple). Controlling XXE processing behavior
in XML::Simple is not really possible (see
https://rt.cpan.org/Ticket/Display.html?id=83794), so as a
workaround the underlying SAX parser is fixed to the XML::SAX::PurePerl manpage
which is uncapable of processing external entities &0x2014; but
unfortunately it is also a slow parser.
the Image::Info manpage, the XML::LibXML::Reader manpage, the XML::Simple manpage, the XML::SAX::PurePerl manpage
For more information about SVG see http://www.w3.org/Graphics/SVG/
Random notes:
Colors
# iterate over polygon,rect,circle,ellipse,line,polyline,text for style->stroke: style->fill:?
# and iterate over each of these within <g> too?! and recurse?!
# append <color>'s
# perhaps even deep recursion through <svg>'s?
ColorProfile <color-profile>
RenderingIntent ?
requiredFeatures
requiredExtensions
systemLanguage
Jerrad Pierce <belg4mit@mit.edu>/ wrote the original code based on the XML::Simple manpage
Slaven Rezic <srezic@cpan.org> wrote the code using the XML::LibXML::Reader manpage
This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
|