我是Apache的新手,我想使用代码转换https://xmlgraphics.apache.org/batik/using/transcoder.html将JPEG图像转换成SVG图像。
这是我的代码:
public void saveAsSvg() throws Exception {
SVGTranscoder t = new SVGTranscoder();
t.addTranscodingHint(SVGTranscoder.KEY_FORMAT, true);
String svgURI = new File(inputFilePath).toURL().toString();
InputStream inputStream = new FileInputStream(inputFilePath);
Reader inputStreamReader = new InputStreamReader(inputStream);
TranscoderInput input = new TranscoderInput(inputStreamReader);
OutputStream ostream = new FileOutputStream(outputFilePath);
Writer outputStreamWriter = new OutputStreamWriter(ostream);
TranscoderOutput output = new TranscoderOutput(outputStreamWriter);
t.transcode(input, output);
ostream.flush();
ostream.close();
System.exit(0);
}我的pom.xml是根据Convert a SVG image to a JPEG image using Apache Batik说的
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>batik-transcoder</artifactId>
<version>1.7</version>
</dependency>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>batik-codec</artifactId>
<version>1.7</version>
</dependency>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>xmlgraphics-commons</artifactId>
<version>2.1</version>
</dependency>我得到的例外情况如下:
org.apache.batik.transcoder.TranscoderException: element
at org.apache.batik.transcoder.svg2svg.PrettyPrinter.fatalError(PrettyPrinter.java:1750) ~[batik-transcoder-1.7.jar:1.7+r608262]
at org.apache.batik.transcoder.svg2svg.PrettyPrinter.print(PrettyPrinter.java:253) ~[batik-transcoder-1.7.jar:1.7+r608262]
at org.apache.batik.transcoder.svg2svg.SVGTranscoder.prettyPrint(SVGTranscoder.java:230) ~[batik-transcoder-1.7.jar:1.7+r608262]
at org.apache.batik.transcoder.svg2svg.SVGTranscoder.transcode(SVGTranscoder.java:186) ~[batik-transcoder-1.7.jar:1.7+r608262]
at com.example.SaveAsJpeg.saveAsSvg(SaveAsJpeg.java:80) ~[classes/:na].
从我得到的例外中学不到任何东西。请帮帮忙。
发布于 2022-06-23 07:12:48
//Step 1
ImageIcon imageIcon = new ImageIcon(imagePath);
Image imageTmp = imageIcon.getImage();
//Step 2
BufferedImage bufferedImage = new BufferedImage(imageIcon.getIconWidth(),
imageIcon.getIconHeight(),
BufferedImage.TYPE_INT_ARGB);
bufferedImage.getGraphics().drawImage(imageTmp, 0, 0, null);
//step 3
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(bufferedImage, "png", baos);
byte[] bytes = baos.toByteArray();
String imageEncode = "data:image/png;base64," + Base64.getEncoder().encodeToString(bytes);
baos.close();
bufferedImage.flush();
//step 4
Element image = document.createElementNS(SVGDOMImplementation.SVG_NAMESPACE_URI, "image");
//set X,Y,Width,Height ...
image.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", imageEncode);您可以使用编码base64将图像转换为svg图像元素。
https://stackoverflow.com/questions/37913301
复制相似问题