SVGGraphics2D drawImage() NullPointerException
Thad Humphries <[email protected]> Sat, 30 Apr 2016 21:26:58 -0400
| Newsgroups | gmane.text.xml.batik.user |
|---|---|
| Message-ID | <CA+bF-zzvq5t3N9-v-7B-7xdgWmHASoeRnc-HZ0cXxZwuYGXWCA@mail.gmail.com> |
--f46d0447862fa744fb0531bdc521
Content-Type: text/plain; charset=UTF-8
I am trying to create an SVG from a BufferedImage using the example at
https://xmlgraphics.apache.org/batik/using/svg-generator.html. The image is
a TIFF read from disk using Apache Commons Imaging. I can successfully
export this image to PNG. However cannot create an SVG. The code is
public static void main(String[] args) {
try {
File inFile = new File(args[0]);
BufferedImage sourceImage = ImageReadExample.imageReadExample(inFile);
// Imaging.writeImage(sourceImage, new File("sourceImage.png"),
ImageFormats.PNG, null);
// Get a DOMImplementation.
DOMImplementation domImpl =
GenericDOMImplementation.getDOMImplementation();
// Create an instance of org.w3c.dom.Document.
String svgNS = "http://www.w3.org/2000/svg";
Document document = domImpl.createDocument(svgNS, "svg", null);
// Create an instance of the SVG Generator.
SVGGraphics2D svgGenerator = new SVGGraphics2D(document);
// Ask the test to render into the SVG Graphics2D implementation.
svgGenerator.drawImage(sourceImage, 0, 0, null);
...
When I end with `Imaging.writeImage(sourceImage, new
File("sourceImage.png"), ImageFormats.PNG, null);` a PNG is created.
However at `svgGenerator.drawImage(sourceImage, 0, 0, null);` I get this
stack trace:
java.lang.NullPointerException
at org.apache.batik.svggen.ImageHandlerBase64Encoder.encodeImage(Unknown
Source)
at org.apache.batik.svggen.ImageHandlerBase64Encoder.handleHREF(Unknown
Source)
at org.apache.batik.svggen.ImageHandlerBase64Encoder.handleHREF(Unknown
Source)
at org.apache.batik.svggen.DefaultImageHandler.handleImage(Unknown Source)
at org.apache.batik.svggen.SimpleImageHandler.handleImage(Unknown Source)
at org.apache.batik.svggen.SVGGraphics2D.drawImage(Unknown Source)
at com.corp.util.image.ImageReadExample.main(ImageReadExample.java:49)
I am using Batik 1.8 with Java 1.8.0_91 on MacOS 10.10.5.
--
"Hell hath no limits, nor is circumscrib'd In one self-place; but where we
are is hell, And where hell is, there must we ever be" --Christopher
Marlowe, *Doctor Faustus* (v. 121-24)
--f46d0447862fa744fb0531bdc521
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">I am trying to create an SVG from a BufferedImage using th=
e example at=C2=A0<a href=3D"https://xmlgraphics.apache.org/batik/using/svg=
-generator.html">https://xmlgraphics.apache.org/batik/using/svg-generator.h=
tml</a>. The image is a TIFF read from disk using Apache Commons Imaging. I=
can successfully export this image to PNG. However cannot create an SVG. T=
he code is<div><br></div><div><div>=C2=A0 public static void main(String[] =
args) {</div><div>=C2=A0 =C2=A0 try {</div><div>=C2=A0 =C2=A0 =C2=A0 File i=
nFile =3D new File(args[0]);</div><div>=C2=A0 =C2=A0 =C2=A0 BufferedImage s=
ourceImage =3D ImageReadExample.imageReadExample(inFile);</div><div>=C2=A0 =
=C2=A0 =C2=A0 // Imaging.writeImage(sourceImage, new File("sourceImage=
.png"), ImageFormats.PNG, null);</div><div><br></div><div>=C2=A0 =C2=
=A0 =C2=A0 // Get a DOMImplementation.</div><div>=C2=A0 =C2=A0 =C2=A0 DOMIm=
plementation domImpl =3D</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 GenericDOMIm=
plementation.getDOMImplementation();</div><div><br></div><div>=C2=A0 =C2=A0=
=C2=A0 // Create an instance of org.w3c.dom.Document.</div><div>=C2=A0 =C2=
=A0 =C2=A0 String svgNS =3D "<a href=3D"http://www.w3.org/2000/svg">ht=
tp://www.w3.org/2000/svg</a>";</div><div>=C2=A0 =C2=A0 =C2=A0 Document=
document =3D domImpl.createDocument(svgNS, "svg", null);</div><d=
iv><br></div><div>=C2=A0 =C2=A0 =C2=A0 // Create an instance of the SVG Gen=
erator.</div><div>=C2=A0 =C2=A0 =C2=A0 SVGGraphics2D svgGenerator =3D new S=
VGGraphics2D(document);</div><div><br></div><div>=C2=A0 =C2=A0 =C2=A0 // As=
k the test to render into the SVG Graphics2D implementation.</div><div>=C2=
=A0 =C2=A0 =C2=A0 svgGenerator.drawImage(sourceImage, 0, 0, null);</div></d=
iv><div>=C2=A0 =C2=A0 =C2=A0 ...</div><div><br clear=3D"all"><div>When I en=
d with `Imaging.writeImage(sourceImage, new File("sourceImage.png"=
;), ImageFormats.PNG, null);` a PNG is created. However at `svgGenerator.dr=
awImage(sourceImage, 0, 0, null);` I get this stack trace:</div><div><br></=
div><div><div>java.lang.NullPointerException</div><div><span class=3D"" sty=
le=3D"white-space:pre"> </span>at org.apache.batik.svggen.ImageHandlerBase6=
4Encoder.encodeImage(Unknown Source)</div><div><span class=3D"" style=3D"wh=
ite-space:pre"> </span>at org.apache.batik.svggen.ImageHandlerBase64Encoder=
.handleHREF(Unknown Source)</div><div><span class=3D"" style=3D"white-space=
:pre"> </span>at org.apache.batik.svggen.ImageHandlerBase64Encoder.handleHR=
EF(Unknown Source)</div><div><span class=3D"" style=3D"white-space:pre"> </=
span>at org.apache.batik.svggen.DefaultImageHandler.handleImage(Unknown Sou=
rce)</div><div><span class=3D"" style=3D"white-space:pre"> </span>at org.ap=
ache.batik.svggen.SimpleImageHandler.handleImage(Unknown Source)</div><div>=
<span class=3D"" style=3D"white-space:pre"> </span>at org.apache.batik.svgg=
en.SVGGraphics2D.drawImage(Unknown Source)</div><div><span class=3D"" style=
=3D"white-space:pre"> </span>at com.corp.util.image.ImageReadExample.main(I=
mageReadExample.java:49)</div></div><div><br></div><div>I am using Batik 1.=
8 with Java 1.8.0_91 on MacOS 10.10.5.</div><div><br></div>-- <br><div clas=
s=3D"gmail_signature"><div dir=3D"ltr">"Hell hath no limits, nor is ci=
rcumscrib'd In one self-place; but where we are is hell, And where hell=
is, there must we ever be" --Christopher Marlowe, <i>Doctor Faustus</=
i> (v. 121-24)</div></div>
</div></div>
--f46d0447862fa744fb0531bdc521--