关闭

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

标签: EMFjavaJavaJAVAJPG
7875人阅读 评论(10) 收藏 举报
分类:

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

使用第三方库下载地址为: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();
		}
	}

}

1
3
查看评论

emf转png emf转jpg

使用poi解析word, ppt等文档得到的图片多为emf格式,如何将emfzhuan
  • zhaoyue007101
  • zhaoyue007101
  • 2014-10-22 11:02
  • 3265

doc/docx转html,以及wmf与emf转jpg,png图片

  • 2014-12-26 17:49
  • 20.47MB
  • 下载

poi解析word文档(解析表格,emf,wmf,svg转jpg图片)

POI解析word文档 poi解析word的表格:   提前先准备需要的jar包:   org.apache.poi poi 3.13 org.apache.poi poi 3.15 ...
  • www1056481167
  • www1056481167
  • 2017-02-24 11:09
  • 1828

将EMF文件转换成JPG文件

EMF格式是在印刷工业中应用与Windows操作系统的文件格式,
  • numen27
  • numen27
  • 2014-05-12 18:23
  • 1802

将EMF图片格式转换成PNG

  • 2015-08-04 15:18
  • 573KB
  • 下载

使用POI在线预览Word

我这里现在只支持doc格式的word。整个思路是先将word转换成HTML,如果word中有图片需要做些IO处理,然后将相对路径赋值给相应,赋值方法可参考下面方法 wordToHtmlConverter.setPicturesManager( new PicturesManager() ...
  • nickyyu
  • nickyyu
  • 2015-08-04 09:54
  • 2433

使用EMF建立模型并生成Java代码

接上文:http://blog.csdn.net/qinjienj/article/details/6851112 EMF实际上定义了2种meta model,分别称为Ecore和Genmodel。Ecore包含了模型的定义,我们在创建EMF模型的时候,也是通过新建和编辑Ecore文件来进...
  • qinjienj
  • qinjienj
  • 2011-10-08 05:58
  • 4505

Java读取与写入图片文件

// FileImageInputStream fis = new FileImageInputStream(new File("timg.jpg")); // FileImageOutputStream fos = new FileImageOut...
  • cheng9981
  • cheng9981
  • 2016-10-15 20:08
  • 8002

Java读取图片文件

需求:读取图片输入流,获取图片并存储在桌面上 代码如下: import javax.imageio.ImageIO; import javax.imageio.stream.ImageOutputStream; import java.awt.*; import java.awt.image.B...
  • hujiajie0131
  • hujiajie0131
  • 2017-07-18 20:54
  • 793

java 字节流读取图片,字符流读取,二进制读取

这两天在学习java中如何对文件进行读取,首先当然是对最简单的文件txt文件进行操练了。并且,逐渐的了解了Java中IO流是如何对文件进行操作的 操练了一段时间,便开始了对图片进行读取,开始的想法如下:图片也是一种文件,我大可以用FileInputStream类对其进行操作。并且我用这种方法进行测...
  • MELEARNER
  • MELEARNER
  • 2011-12-02 23:31
  • 38742
    个人说明
    独立图像处理开发者
    图像处理与对象识别算法外包
    OCR与美化类滤镜开发
    安卓与IOS图像类应用开发

    OpenCV学习群:376281510

    学习图像处理技术关注
    公众号:【OpenCV学堂】
    个人联系方式:
    QQ: 57558865
    个人资料
    • 访问:2849121次
    • 积分:24094
    • 等级:
    • 排名:第330名
    • 原创:257篇
    • 转载:1篇
    • 译文:2篇
    • 评论:1398条
    博客专栏
    最新评论