使用batik.jar文件把svg格式转换成png图片输出的方法如下:

1.首先需要下载batik

最新版本的batik jar包下载地址

batik介绍:

Batik,你可以在JAVA可以使用的地方操作SVG文档,您还可以在你的应用程序使用Batik模块来生成 , 处理和转码SVG图像。Batik很容易让基于Java的应用程序或小程序来处理SVG内容。 例如,使用Batik的SVG的发生器模块 ,Java应用程序或小程序可以很轻松地导出SVG格式的图形。

2.创建java类文件

代码如下:

import java.io.BufferedReader;

import java.io.ByteArrayInputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.FileReader;

import java.io.IOException;

import java.io.OutputStream;

import org.apache.batik.transcoder.TranscoderException;

import org.apache.batik.transcoder.TranscoderInput;

import org.apache.batik.transcoder.TranscoderOutput;

import org.apache.batik.transcoder.image.PNGTranscoder;

/**

* 将svg转换为png格式的图片

*

*

*/

public class SvgPngConverter {

/**

* 将svg字符串转换为png

*

* @param svgCode svg代码

* @param pngFilePath 保存的路径

* @throws TranscoderException svg代码异常

* @throws IOException io错误

*/

public static void convertToPng(String svgCode, String pngFilePath) throws IOException,

TranscoderException {

File file = new File(pngFilePath);

FileOutputStream outputStream = null;

try {

file.createNewFile();

outputStream = new FileOutputStream(file);

convertToPng(svgCode, outputStream);

} finally {

if (outputStream != null) {

try {

outputStream.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

/**

* 将svgCode转换成png文件,直接输出到流中

*

* @param svgCode svg代码

* @param outputStream 输出流

* @throws TranscoderException 异常

* @throws IOException io异常

*/

public static void convertToPng(String svgCode, OutputStream outputStream)

throws TranscoderException, IOException {

try {

byte[] bytes = svgCode.getBytes("utf-8");

PNGTranscoder t = new PNGTranscoder();

TranscoderInput input = new TranscoderInput(new ByteArrayInputStream(bytes));

TranscoderOutput output = new TranscoderOutput(outputStream);

t.transcode(input, output);

outputStream.flush();

} finally {

if (outputStream != null) {

try {

outputStream.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

public static void main(String[] args){

StringBuffer svgCode = new StringBuffer();

// File file = new File("C:\\svgcon.txt");

//

// try {

//BufferedReader br = new BufferedReader(new FileReader(file));

//String tempString = null;

//while((tempString = br.readLine()) != null){

//svgCode.append(tempString);

//}

//System.out.println("svg file content :" + svgCode.toString());

//br.close();

//}

//catch (Exception e1) {

TODO Auto-generated catch block

//e1.printStackTrace();

//}

svgCode.append("");

String pngFilePath = "C:\\Apache2.2\\htdocs\\images\\sss.png";

try {

convertToPng(svgCode.toString(), pngFilePath);

}

catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

catch (TranscoderException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

生成的内容是一条蓝色的直线

特别注意

svg标签上要加入xmlns属性 如下内容:

xmlns="http://www.w3.org/2000/svg"

如过svg标签没有添加这个xmlns属性会出现如下错误:

org.apache.batik.transcoder.TranscoderException: null

Enclosed Exception:

Root element namespace does not match that requested:

Requested: http://www.w3.org/2000/svg

Found: null

at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:136)

at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:156)

at SvgPngConverter.convertToPng(SvgPngConverter.java:68)

at SvgPngConverter.convertToPng(SvgPngConverter.java:41)

at SvgPngConverter.main(SvgPngConverter.java:102)

java图片转为矢量文件_java 通过batik 把svg格式的矢量图生成png图片相关推荐

  1. android中读取svg文件,Android如何加载SVG格式的矢量图

    为何要加载SVG图片 相对于.JPG和.PNG甚至.webp的图片来说,SVG的图片有两个优点,第一:省空间,APK瘦身有一个方面就是从图片瘦身,使用SVG图片可以大量减轻程序的大小.第二:省时间,切 ...

  2. 【Android】将图片转为xml文件

    一.为什么要将图片转为xml文件 为了使图片放大不失真并且体积小易调用.普通的图片在不同的手机上放大可能会变得模糊,而svg格式的矢量图放大而不失真,也就是图片是用代码绘制的.新Android API ...

  3. tkinter canvas jpg_1分钟教你将JPG图片转为CAD文件,简单到没朋友,小白必看

    平时在画CAD图纸的时候,经常可能会照着一些图片来画图,在这个过程中可能会浪费很多的时间,其实我们完全可以把图片转为CAD文件出来的,这样就可以节省大部分的时间啦~ 下面就来告诉你怎么轻松把JPG文件 ...

  4. 解决pycharm QtDesigner生成.ui文件转为.py文件运行不出现界面的方法(信号与槽生成的除外)

    解决pycharm QtDesigner生成.ui文件转为.py文件运行不出现界面的方法(信号与槽生成的除外,会报错闪退) 一般需要导入下面两个包 from PyQt5.QtWidgets impor ...

  5. Word中的SVG格式的矢量插图问题

    问题描述 如使在word中插入svg格式的矢量图? 问题来源 用Python作图保存的图矢量格式为svg.eps.pdf的,不能直接插入word. 而Word本身只能接受wmf,emf格式的矢量图. ...

  6. cad转图片,cad图纸该如何转换成svg格式图片呢?

    CAD转SVG格式图片非 常实 用方便,优点是可以让用户直接用代码来描绘图像,而且用任 何文字处理工具都可以打开SVG图像.CAD制图工作中,我们需要把CAD转换成图片.cad图纸该如何转换成svg格 ...

  7. 图片表情制作,QQ斗图生成,搜狗图片搜索,自适应支持手机浏览

    介绍: 自适应支持手机浏览 图片表情制作 QQ斗图生成 搜狗图片搜索 可以给自己网站吸粉,源码是自适应的手机也可以浏览! 源码集成了搜狗搜索图片接口,可以一键搜索百万图片,还有表情制作等模块 网盘下载 ...

  8. java html5转pdf文件_Java 将Html转为PDF

    本文介绍如何在Java程序中将html文件转换成PDF文件.转换时,需要注意以下两点: 一.需要使用转换插件 二.需要使用到PDF 库,Spire.PDF for Java 版本: 3.6.6 及以后 ...

  9. java url 上传文件_Java使用HttpURLConnection上传文件(转)

    从普通Web页面上传文件很简单,只需要在form标签叫上enctype="multipart/form-data"即可,剩余工作便都交给浏览器去完成数据收集并发送Http请求.但是 ...

  10. java 打开服务器excel文件_Java中上传excel文件并在服务器端读取存入数据库

    传excel文件并在服务器端读取存入数据库 博客分类: struts2 Excel JSP XML 工作 Java代码 页面jsp文件 action处理:publicclassManyContacts ...

最新文章

  1. Monitor CodeForces - 846D ——二维前缀和
  2. CentOS6下yum下载的包存放路径
  3. java 窗口GUI
  4. 《Java线程与并发编程实践》—— 2.3 谨防活跃性问题
  5. 实验9 SQL Server 的触发器
  6. fastdfs-01-了解
  7. 5G的To C 应用还是没有和消费者强关联
  8. linux根目录数量限制,windows,linux文件夹下文件上限最大个数
  9. python控制excel选择区域_python操作excel常用的方法
  10. 中兴笔试题:打家劫舍【动态规划】
  11. linux免安装mysql_Linux 配置mysql 免安装版。
  12. 分享一个好用的抠图网站
  13. 关于/var/run/docker.sock
  14. 小米文件管理android,小米文件管理器
  15. 达摩院量子计算机叫什么,刚刚,阿里巴巴达摩院宣布研制出全球最强量子电路模拟器...
  16. CSDN如何删除上传的资源
  17. 【R】R语言windows下连接MySQL
  18. 乔春洋:品牌文化的三大内涵
  19. 通过ffmpeg把图片转换成视频
  20. 2022危险化学品经营单位主要负责人考试题库及答案

热门文章

  1. selenium下载安装
  2. kindle导出笔记html,手把手教你导出kindle笔记链接Evernote
  3. 流星宝盒直播聚合平台
  4. ESP8266 WIFI 模块和手机通信
  5. 串口-TCP调试助手
  6. Anaconda3安装及opencv配置
  7. FPGA 429 接口设计
  8. Node.js mzitu图片批量下载爬虫1.00
  9. php和plc哪个难,致PLC初学者的入门一课,七大误区如何解决?
  10. HT1621B显示驱动LCD显示驱动芯片- SSOP48