示例如下:

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
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;import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;public class TestChangeImage {public static void main(String[] args) {String strImg = GetImageStr();System.out.println(strImg);
//      String strImg = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNC4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAgLS0+DQo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiIFsNCgk8IUVOVElUWSBuc19mbG93cyAiaHR0cDovL25zLmFkb2JlLmNvbS9GbG93cy8xLjAvIj4NCl0+DQo8c3ZnIHZlcnNpb249IjEuMSINCgkgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM6YT0iaHR0cDovL25zLmFkb2JlLmNvbS9BZG9iZVNWR1ZpZXdlckV4dGVuc2lvbnMvMy4wLyINCgkgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI5MXB4IiBoZWlnaHQ9IjMzcHgiIHZpZXdCb3g9IjAgNi45OTMgOTEgMzMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCA2Ljk5MyA5MSAzMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZGVmcz4NCjwvZGVmcz4NCjxnPg0KCTxnPg0KCQk8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTgzLDIzYy0wLjg5MSwwLjQ0My0xLjc4OSwwLjg3OC0yLDJjMS41MDYsMC45NTcsNS4xODMsMC44MSw5LDANCgkJCWMzLjExNiw0LjM1NS0xLjkxNyw3LjY3LTMsMTFjLTMuNDY1LDAuMTMyLTUuODA2LTAuODYxLTUtNWMxLjkzMSw2LjE0NSw2LjIwNywwLjU4Nyw3LTNjLTguODMxLTMuODE1LTcuOTkzLDEwLjY2Mi0xNywxMA0KCQkJYzIuNzcyLTEuODk1LDUuMzI0LTQuMDA5LDctN2MtMC4zLTEuODExLTQuMjA3LDEuMDEyLTUsMmMtMi41MzUtMi42MDIsMy43MzYtNC44ODEsNy01Yy0xLjU3Mi0wLjc2MS0xLjQ5NC0zLjE3My00LTMNCgkJCWMwLjcyNy0wLjk1OSw0LjY5My01Ljg2MSwyLTRjLTMuMTg3LTEuOTgsMi4wMTYtMy44OSw1LTNjLTAuMTA5LDIuNDg4LTEuODc0LDMuMDk2LDAsNWMyLjI2Ny0xLjA2NywzLjYzNC0zLjAzMyw0LTYNCgkJCWMtNS42NDQtMi4xNzQtMTYuOTQ0LDEuMjYzLTEzLDljLTUuNTYzLTAuMTE1LTEuNDYyLTUuMzUzLTItOWMzLjA1NiwwLjcyMywzLjY0NS0xLjAyMiw2LTFjLTQuNzAyLTEuNjE3LTEuMTQ5LTIuNjE5LDEtNQ0KCQkJYy0wLjMxLTEuMzU3LTIuNTA0LTAuODMtNC0xYy0wLjMyNy0zLjQ1MSw1LjIyNC0zLjY1OCw3LTJjLTEuNzU4LDMuNDc0LTAuODczLDMuNzk2LTIsN2MyLjM1OS0wLjc2NCw2LjkxMS0xLjk3MSw5LDANCgkJCWMwLjY5Nyw1LjM2NC0yLjk1NSw2LjM3OC00LDEwQzg0LjI4OSwyNS4wNDQsODMuNDEsMjQuMjU3LDgzLDIzeiIvPg0KCQk8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTUxLDExYzIuNzI5LTAuNzI5LDIuMDEzLDEuOTg3LDQsMmMtMi42MjIsMS43OTctMi42MjIsNy44OTcsMCw3DQoJCQljLTIuNzgxLDIuMzU3LDAuMjksNS4zODctMiw5YzMuOTE0LDAuNTgxLDUuODA3LTAuODYsOC0yYy0wLjAxMy0xLjk4Ny0yLjcyOS0xLjI3MS0yLTRjMS43MTQsMS4yODYsMy45MzMsMi4wNjcsNCw1DQoJCQljLTMuMjAyLDEuNDY0LTUuNTU3LDMuNzc3LTExLDNjMC0yLjMzMywwLTQuNjY3LDAtN2MtMi45NjgsMS4wMzItMS4yOCw2LjcyLTUsN2MtMC4xNS0yLjQ4MywwLjUxNy00LjE1LDItNQ0KCQkJYzAuMTc0LTIuODQxLTYuNTQyLDEuMjA5LTUtM2MzLjU4OSwwLjU4OSw0LjgzOC0xLjE2Miw3LTJjMC0xLjY2NywwLTMuMzMzLDAtNWMtNC4xMjksMi4yMDQtNy41MjEsNS4xNDYtMTAsOQ0KCQkJYy0yLjA4Mi0zLjEyNyw1LjI4Ni01LjM0NywzLTEyYzMuMDA4LTEuMDA4LDEuNzcyLDIuMjI4LDIsNEM0Ny42OTIsMTUuMDI2LDUxLjc3MiwxNS40MzksNTEsMTF6Ii8+DQoJCTxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTgsMjRjLTMuMDQzLTMuOTA2LDUuNjM2LTcuMTY1LDItMTJjNS4wNDctMC4yMjIsMi4yNjEsNS4xOTYsMSw3DQoJCQljMy4xNTYsMC40ODksMy41MzEtMS44MDIsNy0xYzQuMDc2LDQuMDcxLDEuMTksMTQuMDIxLTEsMThjLTIuOTMyLTAuMDY3LTMuNzE0LTIuMjg2LTUtNGMtMi43MTEsMC42MjItMi40ODksNC4xNzgtNiw0DQoJCQljMi4yMDctMy40Niw1LjI3NC02LjA2LDctMTBjMi4yNDgsMi4wMDItMS43MTcsNi4yNDEsMiw4YzIuODM0LTIuODMzLDMuMTMtOC4yMDQsMy0xNEMyMy41MjYsMjAuMTkzLDE5Ljc1NSwyMS4wODgsMTgsMjR6Ii8+DQoJCTxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMCwyOGM0LjQwMi0xLjU5OCw3LjE5Mi00LjgwOCwxMS03YzEuMzgtNC43MjktMy4xMzItNi41NzQtMS05DQoJCQljMi4wMDUsMS42NjIsNC42NDgsMi42ODUsNSw2Yy0yLjI1OSwyLjg0Mi00LjI1LDExLjEzNywwLDEyYzQuNjIsMC4yODYsMS4zOC03LjI4Niw2LTdjLTAuODc3LDMuNDU2LTEuNzM5LDYuOTI4LTQsOQ0KCQkJYy0yLjQ4OCwwLjE1NC0zLjA5Ni0xLjU3MS01LTJjLTAuOTU4LDMuMDQxLDIuMTQyLDEwLjE0Mi0yLDEwYy0wLjYzMy0zLjM2NywxLjI4OS05LjI4OC0xLTExYy0wLjg4LDIuNDUzLTAuOSw1Ljc2Ny00LDYNCgkJCWMtMC43NTctMy44MTMsNC43OTYtNi40NjEsMi05Yy0xLjcxLDEuNjIzLTMuNjQsMy4wMjctNywzQzAsMjguNjY3LDAsMjguMzMzLDAsMjh6Ii8+DQoJPC9nPg0KPC9nPg0KPC9zdmc+DQo=";
//      GenerateImage(strImg);//        base64ToImage(strImg, "c:/test5.png");try {convertToPng(strImg, "c:/test6.png");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (TranscoderException e) {// TODO Auto-generated catch blocke.printStackTrace();}}// 图片转化成base64字符串public static String GetImageStr() {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理String imgFile = "C:/chenli.svg";// 待处理的图片InputStream in = null;byte[] data = null;// 读取图片字节数组try {in = new FileInputStream(imgFile);data = new byte[in.available()];in.read(data);in.close();} catch (IOException e) {e.printStackTrace();}// 对字节数组Base64编码BASE64Encoder encoder = new BASE64Encoder();return encoder.encode(data);// 返回Base64编码过的字节数组字符串}// base64字符串转化成图片public static boolean GenerateImage(String imgStr) { // 对字节数组字符串进行Base64解码并生成图片if (imgStr == null) // 图像数据为空return false;BASE64Decoder decoder = new BASE64Decoder();try {// Base64解码byte[] b = decoder.decodeBuffer(imgStr);for (int i = 0; i < b.length; ++i) {if (b[i] < 0) {// 调整异常数据b[i] += 256;}}// 生成jpeg图片String imgFilePath = "C:/test22.svg";// 新生成的图片OutputStream out = new FileOutputStream(imgFilePath);out.write(b);out.flush();out.close();return true;} catch (Exception e) {return false;}}/*** @Descriptionmap 对字节数组字符串进行Base64解码并生成图片* @author temdy* @Date 2015-01-26* @param base64 图片Base64数据* @param path 图片路径* @return*/public static boolean base64ToImage(String base64, String path) {// 对字节数组字符串进行Base64解码并生成图片if (base64 == null){ // 图像数据为空return false;}BASE64Decoder decoder = new BASE64Decoder();try {// Base64解码byte[] bytes = decoder.decodeBuffer(base64);for (int i = 0; i < bytes.length; ++i) {if (bytes[i] < 0) {// 调整异常数据bytes[i] += 256;}}// 生成jpeg图片OutputStream out = new FileOutputStream(path);out.write(bytes);out.flush();out.close();return true;} catch (Exception e) {return false;}}/*** 将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 {// utf-8 解码
//            byte[] bytes = svgCode.getBytes("utf-8");// Base64解码BASE64Decoder decoder = new BASE64Decoder();byte[] bytes = decoder.decodeBuffer(svgCode);for (int i = 0; i < bytes.length; ++i) {if (bytes[i] < 0) {// 调整异常数据bytes[i] += 256;}}// 根据上面byte[]数组 生成 png 图片    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();}}}}
}

java svg 转 png 学习相关推荐

  1. 常见的一些反爬虫策略(下篇)-Java网络爬虫系统性学习与实战系列(10)

    常见的一些反爬虫策略(下篇)-Java网络爬虫系统性学习与实战系列(10) 文章目录 联系方式 反爬虫策略 文本混淆 SVG映射 CSS文字偏移 图片混淆伪装 字体反爬 Referer字段反爬 数据分 ...

  2. 2020年Java程序员不得不学习的10大技术

    对于Java开发人员来说,最近几年的时间中,Java生态诞生了很多东西.每6个月更新一次Java版本,以及发布很多流行的框架,如Spring 5.Spring Security 5和Spring Bo ...

  3. java培训分享:java培训架构师学习线路图

    本期java教程分享主要是讲解关于java培训架构师方面的内容,主要针对java架构师的学习线路图进行一个知识点的概括,下面来看看学习java架构师都需要了解哪些内容吧. java培训分享:java培 ...

  4. java培训分享:学习java开发的优势是什么

    想要进入到互联网行业的小伙伴,经常比较纠结学那个学科比较好,目前java.web前端.Python等都是非常热门的行业,前景也是比较好的,选择java学科的人比较多,那么学习java开发的优势是什么呢 ...

  5. java培训分享:学习Java需要什么软件

    在参加java培训过程中学习java技术,需要用到很多辅助工具,这些辅助工具是具有多功能性和实用性的,从代码构建到bug压缩.学习这些工具可以帮助您提高代码的质量,并成为一个更高效的Java开发人员. ...

  6. java开发培训好学习吗?难度大不大?

    ​ 互联网快速的发展,不断的在进行变革和更新,越来越多的人都对这个行业充满向往,很多人都想要学习java技术,那么java开发培训好学习吗?难度大不大?来看看下面的详细介绍. java开发培训好学习吗 ...

  7. 零基础参加java培训的系统学习路线

    ​ 零基础想要学习java技术,那么最好的选择就是参加java培训,进行系统的学习,以下就是小编为大家整理的零基础参加java培训的系统学习路线,希望能够帮助到正在学习java技术的零基础同学. 零基 ...

  8. 零基础java培训如何规划学习路线

    学习java的同学越来越多,很多小伙伴都想知道零基础如何学习java?如何安排学习路线,零基础java培训如何规划学习路线?那么针对以上问题,今天小编特意分享这篇Java学习指南,希望对那些想学Jav ...

  9. JAVA IO - RandomAccessFile Seek学习

    2019独角兽企业重金招聘Python工程师标准>>> JAVA IO - RandomAccessFile Seek学习 import java.io.RandomAccessFi ...

最新文章

  1. mysql之 CentOS系统针对mysql参数优化
  2. 在eclipse里jsp编译后的java和class文件的位置
  3. struts2拦截器遇到的问题
  4. html弹出窗口加载别的页面地址,仿layer.open打开新窗口URL,自适应URL页面高度
  5. C/C++内存分配、内存区划分、常量存储区、堆、栈、自由存储区、全局区(静态区)、代码区
  6. 【PHP学习】—get请求传递参数(五)
  7. 使用 PyMOL 将靶点与配体复合物中的靶点和配体拆出来
  8. 基于C#的学生选课管理系统
  9. Lenovo联想键盘关闭fn功能恢复F1-F12按键
  10. 如何解决终端图标显示异常?
  11. html5制作当当图书榜页面,当当图书.html
  12. kata containers调研
  13. 基于浙大MO平台的开发机器学习算法
  14. PostgreSQL 空间st_contains,st_within空间包含搜索优化 - 降IO和降CPU(bound box)
  15. 广西大学计算机考研录取名单,广西大学2020考研推免生录取名单
  16. 计算正方体、圆柱体的表面积、体积
  17. 一种近红外I区荧光染料ICG-CBT 主要应用领域,是药品监督管理局(FDA)批准的体内应用染料
  18. chrome插件开发时使用import
  19. 快速恢复三菱M70,M80绝对位置。驱动电池没电丢零点后,重 设零点一时爽,要调换刀点和分中对刀时可就呵呵呵了
  20. 增材制造案例“涡轮发动机与冬奥会冰刀”丨季华实验室

热门文章

  1. 导入dmp文件到其他oracle,报错某列的值过大
  2. 零基础掌握IP地址知识,小白必学知识点!
  3. Mac+Typora颜色快捷键设置
  4. 格力电器首款5G手机入网:耐摔+四摄+后置指纹
  5. windows下VMware安装CentOS7
  6. 自定义css3 div阴影js特效
  7. 计算机辅助技术的英文,计算机辅助创新技术,Technology of Computer Aided Innovation,音标,读音,翻译,英文例句,英语词典...
  8. 德州芯片TLV840MADL32DBVRQ1具有可调复位时间延迟和手动复位功能的汽车低压监控器
  9. 原创 OpenCV3编程入门 学习笔记(总)
  10. 041:vue+openlayers读取WKT数据,输出GML、Polyline、GeoJSON(代码示例)