`
piperzero
  • 浏览: 3456863 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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

}

分享到:
评论

相关推荐

    万能图片格式转换已修改免费

    支持的读取格式:BMP,JPEG,PNG,GIF,TIFF,EMF,WMF; 支持的保存格式:BMP,JPEG,PNG,GIF,TIFF,EMF,WMF; 支持同时保存成多种格式的图片; 支持文件夹结构拷贝; 支持超长文件名处理; 支持文件...

    图片格式批量换理狗 Image Batch Dog

    支持的读取格式:BMP,JPEG,PNG,GIF,TIFF,EMF,WMF; 支持的保存格式:BMP,JPEG,PNG,GIF,TIFF; 支持同时保存成多种格式的图片; 支持文件重名时候的定制操作:添加文件名前缀;添加文件名后缀;或者...

    Java 免费Barcode控件_Spire.Barcode-FE_2.6.2.zip

    Free Spire.Barcode for Java 是一款基于 Java 语言开发的,免费的专门对条形码进行操作的类库。适用于商业或个人用途...Free Spire.Barcode 支持各种常见的图片格式,比如 Bitmap, JPG, PNG, EMF, TIFF, GIF and WMF.

    Spire.Barcode_2.6.0.zip

    Spire.Barcode for Java 是一款基于 Java 语言开发的,专门对条形码进行操作的类库。这款产品的主要功能在于帮助开发人员...Spire.Barcode 支持各种常见的图片格式,比如 Bitmap,JPG,PNG,EMF,TIFF,GIF 和 WMF。

    ImageEn3.02_Full_Source_Include_Libs

    加载并保存为AVI, 动态的GIF和多页的TIFF文件格式 读取单独的AVI帧格式 从JPEG和TIFF图像中读取/写入IPTC(IIMV4)信息(像PhotoSho中的文信息)。无需加载XIng或改变原图像就能替换IPTC中的信息。 为用户提供...

    风越批量添加图片水印工具 v3.84

    1、支持读取多种图片格式:*.jpg;*.jpeg;*.gif;*.png;*.psd;*.bmp;*.tiff;*.emf;*.exif;*.ico;*.wmf。2、可设置水印放置的不同位置:左上角、正上方、右上角、左侧、正中、右侧、左下角、正下方、右下角3、可根据...

    emWin 配套的软件工具.rar

    它将常见的图像文件格式(如BMP,GIF 和PNG)转换为所需 的emWin 位图格式。 • emVNC:通用VNC 客户端。用于连接到网络中任何设备上的任何VNC 服务器。拥有分别 适用于Windows、macOS 和Linux 的不同版本。 • ...

    屏保设计师

    1、支持*.bmp;;;;*.gif;;;;*.jpg;;...*.png;...*.emf;...*.jbg等15种图像格式,*.wav;...而且制作好之后的屏保文件同样可以读取本地图形文件和音频文件。下载之后一定不会让你后悔。有了她,任何人都可以成为屏保设计师。

    C#-如何创建PDF条码、二维码

    Free Spire.Barcode for .NET 是 Spire.Barcode for .NET 的免费版本,使用 Free Spire.Barcode,程序员可以在 .NET ...Free Spire.Barcode 支持多种常用的图像格式,例如 Bitmap、JPG、PNG、EMF、TIFF、GIF 和 WMF。

    免费.Net条形码组件:Spire.BarCode for .NET

    Spire.BarCode支持包括Bitmap, JPG, PNG, EMF, TIFF, GIF and WMF等众多常用的图片格式。 主要功能: 1.强大的一维、二维条形码识别和生成功能 支持常用的线性条形码,二维条形码,邮政条形码,能从任何方向检测...

    FlySee(飞翔看图软件)2.3

    可以查看bmp、jpg、gif、png、ico、tif等格式图片,支持GIF动画,支持快速打开快速翻页,支持文件和目录拖放操作,可对图片进行放大缩小,可进行全屏浏览,可以自动播放图片幻灯片,可快速设置任意图片或选区为桌面...

    Image Analyzer(高级图像分析编辑器) v1.36 免费版.rar

    读/写BMP, ICO, CUR, WMF, EMF, JPEG, TIFF, PNG, MNG, GIF, PCX and JPEG2000 图像文件。 读取CR2, PNM, PGM, PPM, HIPS 和Matlab文件。 扫描仪和打印机的支持。 内置的常规和自适应过滤器。 用户specifided在空间...

    CXIMAGE_SRC

    可读取/保存常见的多种图象格式,如bmp,jpg,jpeg,png,pcx,tif,tga,gif,wmf,emf,wbmp,可做常规的图象处理,如缩放,裁减,翻转,镜像,旋转,柔化,锐化,亮度,对比度,模糊,伪彩,浮雕,边缘检测,中值滤波,不同...

    豪杰大眼睛 v2.5 Build 20060801

    支持的格式有: BMP、JPG、TIF、GIF、PSD、JBIG、AVS、AVI、EMF、WMF、FITS、MIFF、ICO、PCD、PCX、DCX、PICT、PNG、PNM、SGI、SUN、TGA、TIM、VIFF、XBM、XPM、XWD等60多种图像格式。 3. 图像输出,每轮美奂 ...

    ImageMagick 6.4.1-3中文版下载-ImageMagick 6.4.1-3绿色软件下载

    它可以读取、转换、写入多种格式的图片。 图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线, 多边形,椭圆,曲线,附加到图片伸展旋转。 ImageMagick是免费软件:全部源码开放,可以自由使用,...

    ImageMagick 最新版

    它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。ImageMagick是免费软件:全部源码开放,可以自由***,复制,...

    Imagemagic 图片处理

    它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。ImageMagick是免费软件:全部源码开放,可以自由***,复制,...

    文件下载及web文件的contentType类型大全

    //读取文件数据 InputStream fis=new BufferedInputStream(new FileInputStream(filePath)); byte[] buffer=new byte[file.length()]; fis.read(buffer); fis.close(); //输出文件数据 toClient.write(buffer)...

    ImageAnalyzer高级图像分析编辑工具v1.38免费版

    特点: 读/写BMP, ICO, CUR, WMF, EMF, JPEG, TIFF, PNG, MNG, GIF, PCX and JPEG2000 图像文件。 读取CR2, PNM, PGM, PPM, HIPS 和Matlab文件。 扫描仪和打印机的支持。 内置的常规和自适应过滤器。 用户...

Global site tag (gtag.js) - Google Analytics