java图片转为矢量文件_java 通过batik 把svg格式的矢量图生成png图片
使用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图片相关推荐
- android中读取svg文件,Android如何加载SVG格式的矢量图
为何要加载SVG图片 相对于.JPG和.PNG甚至.webp的图片来说,SVG的图片有两个优点,第一:省空间,APK瘦身有一个方面就是从图片瘦身,使用SVG图片可以大量减轻程序的大小.第二:省时间,切 ...
- 【Android】将图片转为xml文件
一.为什么要将图片转为xml文件 为了使图片放大不失真并且体积小易调用.普通的图片在不同的手机上放大可能会变得模糊,而svg格式的矢量图放大而不失真,也就是图片是用代码绘制的.新Android API ...
- tkinter canvas jpg_1分钟教你将JPG图片转为CAD文件,简单到没朋友,小白必看
平时在画CAD图纸的时候,经常可能会照着一些图片来画图,在这个过程中可能会浪费很多的时间,其实我们完全可以把图片转为CAD文件出来的,这样就可以节省大部分的时间啦~ 下面就来告诉你怎么轻松把JPG文件 ...
- 解决pycharm QtDesigner生成.ui文件转为.py文件运行不出现界面的方法(信号与槽生成的除外)
解决pycharm QtDesigner生成.ui文件转为.py文件运行不出现界面的方法(信号与槽生成的除外,会报错闪退) 一般需要导入下面两个包 from PyQt5.QtWidgets impor ...
- Word中的SVG格式的矢量插图问题
问题描述 如使在word中插入svg格式的矢量图? 问题来源 用Python作图保存的图矢量格式为svg.eps.pdf的,不能直接插入word. 而Word本身只能接受wmf,emf格式的矢量图. ...
- cad转图片,cad图纸该如何转换成svg格式图片呢?
CAD转SVG格式图片非 常实 用方便,优点是可以让用户直接用代码来描绘图像,而且用任 何文字处理工具都可以打开SVG图像.CAD制图工作中,我们需要把CAD转换成图片.cad图纸该如何转换成svg格 ...
- 图片表情制作,QQ斗图生成,搜狗图片搜索,自适应支持手机浏览
介绍: 自适应支持手机浏览 图片表情制作 QQ斗图生成 搜狗图片搜索 可以给自己网站吸粉,源码是自适应的手机也可以浏览! 源码集成了搜狗搜索图片接口,可以一键搜索百万图片,还有表情制作等模块 网盘下载 ...
- java html5转pdf文件_Java 将Html转为PDF
本文介绍如何在Java程序中将html文件转换成PDF文件.转换时,需要注意以下两点: 一.需要使用转换插件 二.需要使用到PDF 库,Spire.PDF for Java 版本: 3.6.6 及以后 ...
- java url 上传文件_Java使用HttpURLConnection上传文件(转)
从普通Web页面上传文件很简单,只需要在form标签叫上enctype="multipart/form-data"即可,剩余工作便都交给浏览器去完成数据收集并发送Http请求.但是 ...
- java 打开服务器excel文件_Java中上传excel文件并在服务器端读取存入数据库
传excel文件并在服务器端读取存入数据库 博客分类: struts2 Excel JSP XML 工作 Java代码 页面jsp文件 action处理:publicclassManyContacts ...
最新文章
- Monitor CodeForces - 846D ——二维前缀和
- CentOS6下yum下载的包存放路径
- java 窗口GUI
- 《Java线程与并发编程实践》—— 2.3 谨防活跃性问题
- 实验9 SQL Server 的触发器
- fastdfs-01-了解
- 5G的To C 应用还是没有和消费者强关联
- linux根目录数量限制,windows,linux文件夹下文件上限最大个数
- python控制excel选择区域_python操作excel常用的方法
- 中兴笔试题:打家劫舍【动态规划】
- linux免安装mysql_Linux 配置mysql 免安装版。
- 分享一个好用的抠图网站
- 关于/var/run/docker.sock
- 小米文件管理android,小米文件管理器
- 达摩院量子计算机叫什么,刚刚,阿里巴巴达摩院宣布研制出全球最强量子电路模拟器...
- CSDN如何删除上传的资源
- 【R】R语言windows下连接MySQL
- 乔春洋:品牌文化的三大内涵
- 通过ffmpeg把图片转换成视频
- 2022危险化学品经营单位主要负责人考试题库及答案