-下载所需jar包:http://pan.baidu.com/s/1eSExTsQ
-1.新建工具类

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
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 java.util.zip.GZIPOutputStream;import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;import net.arnx.wmf2svg.gdi.svg.SvgGdi;
import net.arnx.wmf2svg.gdi.wmf.WmfParser;import org.apache.batik.transcoder.TranscoderException;
import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;
import org.apache.batik.transcoder.image.ImageTranscoder;
import org.apache.batik.transcoder.image.JPEGTranscoder;
import org.apache.batik.transcoder.image.PNGTranscoder;
import org.apache.batik.transcoder.wmf.tosvg.WMFTranscoder;
import org.w3c.dom.Document;public class WmfToPng {public static void main(String[] args) {String result = convert("d:\\80814378377.wmf");System.out.println(result);}@Deprecatedpublic static String convert2(String path) throws TranscoderException,IOException {String wmfPath = path;File wmf = new File(wmfPath);FileInputStream wmfStream = new FileInputStream(wmf);ByteArrayOutputStream imageOut = new ByteArrayOutputStream();int noOfByteRead = 0;while ((noOfByteRead = wmfStream.read()) != -1) {imageOut.write(noOfByteRead);}imageOut.flush();wmfStream.close();// wmf 转换为svgWMFTranscoder transcoder = new WMFTranscoder();// TranscodingHints hints = new TranscodingHints();// hints.put(WMFTranscoder.KEY_HEIGHT, 1000f);// hints.put(WMFTranscoder.KEY_WIDTH, 1500f);// transcoder.setTranscodingHints(hints);TranscoderInput input = new TranscoderInput(new ByteArrayInputStream(imageOut.toByteArray()));ByteArrayOutputStream svg = new ByteArrayOutputStream();TranscoderOutput output = new TranscoderOutput(svg);transcoder.transcode(input, output);String svgFile = StringTool.replace(wmfPath, "wmf", "svg");FileOutputStream fileOut = new FileOutputStream(svgFile);fileOut.write(svg.toByteArray());fileOut.flush();fileOut.close();svg.close();// svg -> jpgImageTranscoder it = new JPEGTranscoder();it.addTranscodingHint(JPEGTranscoder.KEY_QUALITY, new Float(0.5f));ByteArrayOutputStream jpg = new ByteArrayOutputStream();it.transcode(new TranscoderInput(new ByteArrayInputStream(svg.toByteArray())), new TranscoderOutput(jpg));String jpgFile = StringTool.replace(wmfPath, "wmf", "jpg");FileOutputStream jpgOut = new FileOutputStream(jpgFile);jpgOut.write(jpg.toByteArray());jpgOut.flush();jpgOut.close();jpg.close();// Filor.deleteFile(svgFile);// 删除掉中间文件return jpgFile;}public static String convert(String path) {try {String svgFile = StringTool.replace(path, "wmf", "svg");wmfToSvg(path, svgFile);String jpgFile = StringTool.replace(path, "wmf", "png");svgToJpg(svgFile, jpgFile);return jpgFile;} catch (Exception e) {e.printStackTrace();}return null;}/*** 将svg转化为JPG* * @param src* @param dest*/public static String  svgToJpg(String src, String dest) {FileOutputStream jpgOut = null;FileInputStream svgStream = null;ByteArrayOutputStream svgOut = null;ByteArrayInputStream svgInputStream = null;ByteArrayOutputStream jpg = null;try {// 获取到svg文件File svg = new File(src);svgStream = new FileInputStream(svg);svgOut = new ByteArrayOutputStream();// 获取到svg的streamint noOfByteRead = 0;while ((noOfByteRead = svgStream.read()) != -1) {svgOut.write(noOfByteRead);}JPEGTranscoder it = new JPEGTranscoder();it.addTranscodingHint(JPEGTranscoder.KEY_QUALITY, new Float(0.9f));it.addTranscodingHint(ImageTranscoder.KEY_WIDTH, new Float(100));jpg = new ByteArrayOutputStream();svgInputStream = new ByteArrayInputStream(svgOut.toByteArray());it.transcode(new TranscoderInput(svgInputStream),new TranscoderOutput(jpg));jpgOut = new FileOutputStream(dest);jpgOut.write(jpg.toByteArray());} catch (Exception e) {e.printStackTrace();} finally {try {if (svgInputStream != null) {svgInputStream.close();}if (jpg != null) {jpg.close();}if (svgStream != null) {svgStream.close();}if (svgOut != null) {svgOut.close();}if (jpgOut != null) {jpgOut.flush();jpgOut.close();}} catch (IOException e) {e.printStackTrace();}}return dest;}/*** 将wmf转换为svg* * @param src* @param dest*/public static void wmfToSvg(String src, String dest) {boolean compatible = false;try {InputStream in = new FileInputStream(src);WmfParser parser = new WmfParser();final SvgGdi gdi = new SvgGdi(compatible);parser.parse(in, gdi);Document doc = gdi.getDocument();OutputStream out = new FileOutputStream(dest);if (dest.endsWith(".svgz")) {out = new GZIPOutputStream(out);}output(doc, out);} catch (Exception e) {e.printStackTrace();}}private static void output(Document doc, OutputStream out) throws Exception {TransformerFactory factory = TransformerFactory.newInstance();Transformer transformer = factory.newTransformer();transformer.setOutputProperty(OutputKeys.METHOD, "xml");transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");transformer.setOutputProperty(OutputKeys.INDENT, "yes");transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC,"-//W3C//DTD SVG 1.0//EN");transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM,"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd");transformer.transform(new DOMSource(doc), new StreamResult(out));out.flush();out.close();}
}

-2.StringToll中的replace()方法

public static String replace(String original ,String find,String replace){if (original==null || find==null ||replace==null){return original;}int findLen = find.length();int originalLen = original.length();if (originalLen==0 || findLen==0){return original;}StringBuffer sb = new StringBuffer();int begin = 0; //下次检索开始的位置int i = original.indexOf(find); //找到的子串位置while (i!=-1){sb.append(original.substring(begin,i));sb.append(replace);begin = i + findLen;i = original.indexOf(find,begin);}if (begin<originalLen){sb.append(original.substring(begin));}return sb.toString();}

-3.调用WmfToPng 类

//图片保存路径
String ready_url = WmfToPng.convert(src);

java wmf格式图片转png相关推荐

  1. 如何将CAD转换为WMF格式图片?

    WMF图片是由简单的线条和封闭线条(图形)组成的矢量图,如何将CAD转换为WMF格式图片?今天就给大家具体演示一下.演示操作如下: cad转wmf转换器 https://www.xunjiecad.c ...

  2. Qt显示wmf格式图片

    Qt显示wmf格式图片         夸平台的Qt不并不支持Auto CAD的输出图wmf.那么怎么才能在Qt下显示wmf格式图片呢?智能用win32 api了.具体过程下面一一介绍.        ...

  3. WMF格式图片的特点

    CAD制图过程中,我们常常会转换CAD图纸的各种格式.其中就有WMF格式,WMF格式是一种图元文件,图元文件的扩展名包括.WMF和.EMF两种.今天我想和大家简单的分享一下WMF格式图片的特点. WM ...

  4. 怎样把CAD转换为WMF格式图片呢?

    WMF图片是由简单的线条和封闭线条(图形)组成的矢量图,其主要特点是文件非 常小,可以任意缩放而不影响图像质量.怎样把CAD转换为WMF格式图片呢?今天就给大家具体演示一下.演示操作如下: cad转w ...

  5. java jfif格式图片转为jpg

    首先需要依赖: <!--jai--><dependency><groupId>javax.media</groupId><artifactId&g ...

  6. java tif格式图片_java给tif格式图片加文字水印?

    展开全部 package com.coderli.image; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...

  7. cad转wmf格式,该如何转换呢?

    WMF格式是一种图元文件或者可以说是图片格式的一种.cad转wmf格式,该如何转换呢?下面就给大家分享一下,cad转wmf格式的演示操作. 1.我们在浏览器里搜索"CAD编辑器"进 ...

  8. wmf格式的图片如何通过Java转换成JPG格式的在页面上直接显示?

    在网上找了很多种方式都试了,但是结果都不是很理想,希望大家能帮助我最好代码比较详细,我的数据库中存的是blob格式存的二进制图纸数据是.wmf格式的,需要转换一下格式显示在前端页面上.

  9. java批量转换图片格式

    废话不多直接上代码,代码其实也不多.... package com.qiao.testImage;import java.awt.image.BufferedImage; import java.io ...

最新文章

  1. Blender未来科幻武器全流程制作视频教程
  2. Python中字典对象实现原理
  3. JVM_07 Class文件结构
  4. CString 操作函数
  5. linux ssh 远程会话保存,远程SSH会话和流程在断开后运行的5种方法
  6. 麦咭智能机器人宣传片_【头脑风暴】移动机器人能够撬动上亿线下流量,挖掘市场增量吗?...
  7. mysql connector放在哪_关于MySQL Connector/C++那点事儿
  8. javascript的概述
  9. 通信原理及系统系列8—— 如何消除码间串扰
  10. android照片裁剪
  11. 桃花院长:如何相亲找到对象结婚?你不知道的流程
  12. 《树莓派项目实战》第九节 使用PCF8591模块和光敏电阻传感器测量光照强度
  13. DSP/BIOS详解入门-再回炉
  14. 程序员小灰2017-2019年原创汇总
  15. uni-app跨平台APP开发
  16. 航标灯实验c语言程序,单片机原理及应用习题 (带答案)
  17. 百度李彦宏登上《时代周刊》整个互联网都在比心
  18. 3Dmax动画导出 unity导入 自用
  19. 业务还是技术测试?从初级软件测试到高级测试工程师,我都经历了什么......
  20. 高压电压采样之差分放大电路

热门文章

  1. 查看云服务器系统的命令,查看云服务器系统的命令行
  2. ModuleNotFoundError: No module named ‘_lzma‘
  3. Adaptive AUTOSAR (AP) 平台设计(6)——通信管理
  4. (2022版)一套教程搞定k8s安装到实战 | Ingress
  5. Bootstrap 模态框(Modal)的属性及方法
  6. 重装系统(制作系统U盘、安装系统、U盘复原、win10、微PE)
  7. 2月国内外CTF比赛时间汇总来了!
  8. Linux:MySQL:重启服务细节
  9. (iPhone/iPad开发)iOS中生成随机数
  10. 李想骂街之后 理想IPO真能渡劫?