JAVA读取EMF文件并转化为PNG,JPG,GIF格式
2016-07-29 00:00
435 查看
JAVA读取EMF文件并转化为PNG,JPG,GIF格式
使用第三方库下载地址为:http://java.freehep.org/vectorgraphics/index.html
主要思路:
使用EMFInputStream读取EMF文件,然后使用EMFRenderer对象将EMF绘制到创建
好的空白的BufferedImage里面。这样就把EMF图片转化为Java中的BufferedImage对
象,然后可以重新保存为Java 2D支持图像格式如PNG或者JPG等。
代码如下:
使用第三方库下载地址为:http://java.freehep.org/vectorgraphics/index.html
主要思路:
使用EMFInputStream读取EMF文件,然后使用EMFRenderer对象将EMF绘制到创建
好的空白的BufferedImage里面。这样就把EMF图片转化为Java中的BufferedImage对
象,然后可以重新保存为Java 2D支持图像格式如PNG或者JPG等。
代码如下:
import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JPanel; import org.freehep.graphicsio.emf.EMFInputStream; import org.freehep.graphicsio.emf.EMFRenderer; /** * download the third-party libraries here: * http://java.freehep.org/vectorgraphics/index.html * * @author gloomyfish * */ public class EMFReader { public static void main(String[] args) { try { EMFInputStream inputStream = new EMFInputStream(new FileInputStream("D:\\export.emf"), EMFInputStream.DEFAULT_VERSION); System.out.println("height = " + inputStream.readHeader().getBounds().getHeight()); System.out.println("widht = " + inputStream.readHeader().getBounds().getWidth()); // headerInfo of bitmap API always tell a lie, could not get // correct width and height // BitmapInfoHeader headerInfo = new BitmapInfoHeader(inputStream); // System.out.println("Big Error on reading emf format picture"); EMFRenderer emfRenderer = new EMFRenderer(inputStream); // create buffered image object from EMF render final int width = (int)inputStream.readHeader().getBounds().getWidth(); final int height = (int)inputStream.readHeader().getBounds().getHeight(); System.out.println("widht = " + width + " and height = " + height); final BufferedImage result = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g2 = (Graphics2D)result.createGraphics(); emfRenderer.paint(g2); // write it as png/jpg/gif, up to you!!! File outputfile = new File("D:\\result.png"); ImageIO.write(result, "png", outputfile); // display it JPanel resultPanel = new JPanel() { /** * */ private static final long serialVersionUID = 1L; public void paintComponent(Graphics g) { super.paintChildren(g); Graphics2D g2 = (Graphics2D)g; g2.drawImage(result, 0, 0, width, height, null); } }; JFrame ui = new JFrame("EMF Reader"); ui.getContentPane().setLayout(new BorderLayout()); ui.getContentPane().add(resultPanel, BorderLayout.CENTER); ui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ui.setSize(new Dimension(width+20, height+40)); ui.setVisible(true); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
相关文章推荐
- Java Socket编程 - 简单的问候服务实现
- JAVA实现自动打开URL对应的网页并保存为图片-不借助第三方API
- Java JPA快速入门介绍
- Java Swing 层次面板(JLayeredPanel) Demo
- JAVA Swing自定义JScorllPanel
- Java Swing模拟水波纹扩散效果动画
- Java语言中反射动态代理接口的解释与演示
- 演讲预告:Why Java Sucks and C# Rocks
- Why Java Sucks and C# Rocks(1):比较的意义与目的
- Why Java Sucks and C# Rocks(2):基础类型与对象
- 浅谈Java 7的闭包与Lambda表达式之优劣
- Why Java Sucks and C# Rocks(3):Attribute与Annotation
- 阐述JavaSE中获取properties资源文件的多种方式
- Java Mail最基本的发送邮件例子
- struts-2.3.1+spring-framework-3.2.2+hibernate-4.1.1整合历程<第三部分>(详解)
- Java实现的AES加解密程序
- 玩转Java对象和XML相互转换
- 一起学Maven(eclipse项目构建)<二>
- MyEclipse10 SVN 插件安装
- struts-2.3.1+spring-framework-3.2.2+hibernate-4.1.1整合历程<第一部分>(详解)