java emf 转jpg_JAVA读取EMF文件并转化为PNG,JPG,GIF格式

该博客介绍了如何使用JAVA读取EMF文件并将其转换为PNG、JPG和GIF格式。通过第三方库EMFInputStream和EMFRenderer,将EMF图片转化为BufferedImage对象,然后利用ImageIO.write方法保存为不同格式的图像。
摘要由CSDN通过智能技术生成

JAVA读取EMF文件并转化为PNG,JPG,GIF格式

使用第三方库下载地址为:http://java.freehep.org/vectorgraphics/index.html

主要思路:

使用EMFInputStream读取EMF文件,然后使用EMFRenderer对象将EMF绘制到创建

好的空白的BufferedImage里面。这样就把EMF图片转化为Java中的BufferedImage对

象,然后可以重新保存为Java 2D支持图像格式如PNG或者JPG等。

代码如下:

[java] view plaincopy

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   www.heatpress123.net

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();

}

}

posted on 2012-11-23 10:00 你爸是李刚 阅读(1546) 评论(0)  编辑  收藏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值