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; 支持同时保存成多种格式的图片; 支持文件夹结构拷贝; 支持超长文件名处理; 支持文件...
支持的读取格式:BMP,JPEG,PNG,GIF,TIFF,EMF,WMF; 支持的保存格式:BMP,JPEG,PNG,GIF,TIFF; 支持同时保存成多种格式的图片; 支持文件重名时候的定制操作:添加文件名前缀;添加文件名后缀;或者...
Free Spire.Barcode for Java 是一款基于 Java 语言开发的,免费的专门对条形码进行操作的类库。适用于商业或个人用途...Free Spire.Barcode 支持各种常见的图片格式,比如 Bitmap, JPG, PNG, EMF, TIFF, GIF and WMF.
Spire.Barcode for Java 是一款基于 Java 语言开发的,专门对条形码进行操作的类库。这款产品的主要功能在于帮助开发人员...Spire.Barcode 支持各种常见的图片格式,比如 Bitmap,JPG,PNG,EMF,TIFF,GIF 和 WMF。
加载并保存为AVI, 动态的GIF和多页的TIFF文件格式 读取单独的AVI帧格式 从JPEG和TIFF图像中读取/写入IPTC(IIMV4)信息(像PhotoSho中的文信息)。无需加载XIng或改变原图像就能替换IPTC中的信息。 为用户提供...
1、支持读取多种图片格式:*.jpg;*.jpeg;*.gif;*.png;*.psd;*.bmp;*.tiff;*.emf;*.exif;*.ico;*.wmf。2、可设置水印放置的不同位置:左上角、正上方、右上角、左侧、正中、右侧、左下角、正下方、右下角3、可根据...
它将常见的图像文件格式(如BMP,GIF 和PNG)转换为所需 的emWin 位图格式。 • emVNC:通用VNC 客户端。用于连接到网络中任何设备上的任何VNC 服务器。拥有分别 适用于Windows、macOS 和Linux 的不同版本。 • ...
1、支持*.bmp;;;;*.gif;;;;*.jpg;;...*.png;...*.emf;...*.jbg等15种图像格式,*.wav;...而且制作好之后的屏保文件同样可以读取本地图形文件和音频文件。下载之后一定不会让你后悔。有了她,任何人都可以成为屏保设计师。
Free Spire.Barcode for .NET 是 Spire.Barcode for .NET 的免费版本,使用 Free Spire.Barcode,程序员可以在 .NET ...Free Spire.Barcode 支持多种常用的图像格式,例如 Bitmap、JPG、PNG、EMF、TIFF、GIF 和 WMF。
Spire.BarCode支持包括Bitmap, JPG, PNG, EMF, TIFF, GIF and WMF等众多常用的图片格式。 主要功能: 1.强大的一维、二维条形码识别和生成功能 支持常用的线性条形码,二维条形码,邮政条形码,能从任何方向检测...
可以查看bmp、jpg、gif、png、ico、tif等格式图片,支持GIF动画,支持快速打开快速翻页,支持文件和目录拖放操作,可对图片进行放大缩小,可进行全屏浏览,可以自动播放图片幻灯片,可快速设置任意图片或选区为桌面...
读/写BMP, ICO, CUR, WMF, EMF, JPEG, TIFF, PNG, MNG, GIF, PCX and JPEG2000 图像文件。 读取CR2, PNM, PGM, PPM, HIPS 和Matlab文件。 扫描仪和打印机的支持。 内置的常规和自适应过滤器。 用户specifided在空间...
可读取/保存常见的多种图象格式,如bmp,jpg,jpeg,png,pcx,tif,tga,gif,wmf,emf,wbmp,可做常规的图象处理,如缩放,裁减,翻转,镜像,旋转,柔化,锐化,亮度,对比度,模糊,伪彩,浮雕,边缘检测,中值滤波,不同...
支持的格式有: 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是免费软件:全部源码开放,可以自由使用,...
它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。ImageMagick是免费软件:全部源码开放,可以自由***,复制,...
它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。ImageMagick是免费软件:全部源码开放,可以自由***,复制,...
//读取文件数据 InputStream fis=new BufferedInputStream(new FileInputStream(filePath)); byte[] buffer=new byte[file.length()]; fis.read(buffer); fis.close(); //输出文件数据 toClient.write(buffer)...
特点: 读/写BMP, ICO, CUR, WMF, EMF, JPEG, TIFF, PNG, MNG, GIF, PCX and JPEG2000 图像文件。 读取CR2, PNM, PGM, PPM, HIPS 和Matlab文件。 扫描仪和打印机的支持。 内置的常规和自适应过滤器。 用户...