【问题标题】:Convert svg image to png in java by servlet通过servlet在java中将svg图像转换为png
【发布时间】:2017-07-09 12:17:36
【问题描述】:

在这里,我正在尝试将 SVG 图像发送到本地服务器,并且在输出中我想以 PNG / JPEG 格式下载该图像。

虽然我找到了一些解决方案,但这些是由 BATIK 库完成的,但在我的 Eclipse 中不支持 BATIK 库,所以我不能使用 batik 库。

【问题讨论】:

  • 发布您的代码。
  • 在你的eclipse项目中创建一个名为lib的文件夹,将BATIK库复制到lib文件夹,右键单击libraray“jar”并选择->添加到buildpath。
  • 先生,我在哪里可以找到蜡染库??? @krzysztof Cichocki

标签: java servlets svg png


【解决方案1】:

使用蜡染库。下面是代码。

    import java.io.*;
    import org.apache.batik.transcoder.image.PNGTranscoder;
    import org.apache.batik.transcoder.TranscoderInput;
    import org.apache.batik.transcoder.TranscoderOutput;
    import java.nio.file.Paths;
    import java.nio.file.Path;
    public class svg2png {
        public static void main(String[] args) throws Exception {
            //Step -1: We read the input SVG document into Transcoder Input
            //We use Java NIO for this purpose
            String svg_URI_input = Paths.get("chessboard.svg").toUri().toURL().toString();
            TranscoderInput input_svg_image = new TranscoderInput(svg_URI_input);        
            //Step-2: Define OutputStream to PNG Image and attach to TranscoderOutput
            OutputStream png_ostream = new FileOutputStream("chessboard.png");
            TranscoderOutput output_png_image = new TranscoderOutput(png_ostream);              
            // Step-3: Create PNGTranscoder and define hints if required
            PNGTranscoder my_converter = new PNGTranscoder();        
            // Step-4: Convert and Write output
            my_converter.transcode(input_svg_image, output_png_image);
            // Step 5- close / flush Output Stream
            png_ostream.flush();
            png_ostream.close();        
        }
}

希望对你有所帮助。

请参考:http://thinktibits.blogspot.com/2012/12/Batik-Convert-SVG-PNG-Java-Program-Example.html

【讨论】:

  • 我也有这个代码,但是在我的 Eclipse 中有蜡染库的错误。支持 BATIK 库,我该怎么办??
  • 检查版本兼容性。 java-forums.org/new-java/…
  • 我已经添加了 BATIK 库,但问题还是一样。
  • 这在 eclipse 中不起作用。它会产生以下错误:我已经导入了这些类
  • 只是为了完整性(因为问题要求“PNG / JPEG 格式的图像”):或者对于 PNGTranscoder,您可以使用 org.apache.batik.transcoder.image.JPEGTranscoder 将 SVG 文件转换为一个 jpg 文件。
【解决方案2】:

您也可以在不使用 Batik Transcoder 的情况下将 svg 转换为 png 格式。

BufferedImage input_image = null; 
input_image = ImageIO.read(new File("Convert_to_PNG.svg")); //read svginto input_image object
File outputfile = new File("imageio_png_output.png"); //create new outputfile object
ImageIO.write(input_image, "PNG", outputfile);

只需使用ImageIO 库即可。希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2022-07-05
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 2013-06-05
    • 2017-12-08
    • 2011-06-16
    相关资源
    最近更新 更多