`
lynnlysh
  • 浏览: 178883 次
  • 性别: Icon_minigender_2
  • 来自: 天津
社区版块
存档分类
最新评论

mxgraph之保存图片

阅读更多
1、写在前端:任何情况下,保存图片不可能只通过前台代码就能实现,因此,要保存前台绘制的graph图,我们需要用到mxgraph中的java包啦~
2、参考实例:
mxgraph\java\test\com\mxgraph\test\mxImageExportTest.java
这个例子就是将xml文档生成图片的。
3、改良的例子:
/**
 * 导出图片文件
 * @param w 图片宽
 * @param h 图片高
 * @param imageXML graph对应的xml代码
 */
	public void exportImage(int w, int h,String imageXML) {
                  String path = ".";
                  String processName="graphImage"
		File png = new File(path + processName + ".png");
		File dir = new File(path);
		if (!dir.exists()) {//若路径不存在则创建此路径
			dir.mkdir();
		}
		BufferedImage image = mxUtils.createBufferedImage(w, h, Color.WHITE);
		Graphics2D g2 = image.createGraphics();
		mxUtils.setAntiAlias(g2, true, true);
		mxGraphicsCanvas2D gc2 = new mxGraphicsCanvas2D(g2);
		gc2.setAutoAntiAlias(true);
		try {
			parseXmlSax(imageXML, gc2);
			ImageIO.write(image, "png", png);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
/**
	 * 创建并返回请求的图片
	 * 
	 * @param request
	 * @return
	 * @throws SAXException
	 * @throws ParserConfigurationException
	 * @throws IOException
	 */
	protected void parseXmlSax(String xml, mxICanvas2D canvas) {
		// Creates SAX handler for drawing to graphics handle
		mxSaxOutputHandler handler = new mxSaxOutputHandler(canvas);
		// Creates SAX parser for handler
		XMLReader reader;
		try {
			reader = SAXParserFactory.newInstance().newSAXParser()
					.getXMLReader();
			reader.setContentHandler(handler);
			// Renders XML data into image
			reader.parse(new InputSource(new StringReader(xml)));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

4.前台得到xml代码
注:这里的xml代码可不是mxgraph生成的那种可以直接读的代码呦!
var graph = designer.graph;//这里是你的js中所对应的graph
	    	var xmlDoc = mxUtils.createXmlDocument(); 
	    	var root = xmlDoc.createElement('output'); 
	    	xmlDoc.appendChild(root); 
	    	 
	    	var xmlCanvas = new mxXmlCanvas2D(root); 
	    	var imgExport = new mxImageExport(); 
	    	imgExport.drawState(graph.getView().getState(graph.model.root), xmlCanvas); 
	    	 
	    	var bounds = graph.getGraphBounds(); 
	    	var w = Math.round(bounds.x + bounds.width + 4); 
	    	var h = Math.round(bounds.y + bounds.height + 4); 
	    	var xml = mxUtils.getXml(root);
                  xml = encodeURIComponent(xml);//这就是要提交到后台的xml代码


5.这样可以说就大功告成了,但是所导出的图片有两个bug:中文乱码和图片节点无法被绘制。解决大法:用附件中被我改良了的mxgraph包代替所有mxgraph的jar包即可。
6.要想知道我源码中都改了些什么,且听下回歪歪。
***********************格叽格叽***************************************
lysh,心是透明的,因为雨慢慢的停了……
分享到:
评论
6 楼 SYSGIS 2016-10-21  
嗯,写的不错,每篇文章的后记写的也不错,哈哈
5 楼 goodone 2016-06-01  
我想问问,怎么把mxgraph生成xml格式的流程生成图片文件啊!需要怎么做?
4 楼 ncxujinjun 2016-03-29  
楼主的内容很有帮助
3 楼 haoyingshaung 2014-09-27  
qq:373660351
请教mxgraph 保存图片问题
2 楼 haoyingshaung 2014-07-04  
请教 生成图片  QQ 373660351
1 楼 usernames 2013-12-05  
    

相关推荐

    mxGraph插件,java代码xml导出成图片

    5. **保存图片**:将BufferedImage对象保存为PNG、JPEG或其他图片格式,然后返回给前端。 在Linux服务器部署时,可能会遇到中文字体显示问题。由于Linux默认可能不包含某些中文字体,因此在渲染图形时可能会出现...

    mxgraph.MXGRAPH..MXGRAPH..

    很抱歉,根据您提供的信息,"MXGRAPH"似乎与音乐文件"陈奕迅 - 不要说话.mp3"、"陈奕迅 - 不如这样.mp3"、"陈奕迅 - 不如不见.mp3"并不相关,这看起来更像一个音乐文件的列表而不是IT行业的专业知识点。MXGRAPH通常...

    mxgraph 之 自定义双边框长方形(即:doubleRectangle)

    在IT领域,自定义图形是实现用户界面个性化和专业化的关键元素之一。`mxgraph` 是一个强大的JavaScript库,用于创建交互式图形应用程序。本文将深入探讨如何在`mxgraph` 中实现自定义的双边框长方形,也就是所谓的`...

    mxgraph Demo汉化(简单实例)

    4. **数据存储和恢复**:图形数据的序列化和反序列化,通常以JSON格式进行,便于保存和加载图形布局。 5. **撤销/重做机制**:通过记录和回放用户操作,实现图形编辑的历史记录。 在探索这个Demo时,你可以尝试创建...

    mxGraph图形嵌入开发

    mxGraph是一个JS绘图组件适用于需要在网页中设计/编辑Workflow/BPM流程图、图表、网络图和普通图形的Web应用程序。mxgraph下载包中包括用javescript写的前端程序,也包括多个和后端程序(java/C#等等)集成的例子。以下...

    mxgraph API和demo

    **mxgraph API与Demo详解** mxGraph是一款强大的JavaScript图形库,用于绘制和编辑流程图、组织结构图等复杂图表。它提供了丰富的API,使得开发者能够轻松地在Web应用中实现图形化界面。本文将深入探讨mxGraph API...

    mxgraph开发包

    6. **保存和加载状态**:`mxGraph`支持将图形状态序列化,以便于保存和加载。 **五、应用场景** `mxGraph`广泛应用于业务流程图、网络拓扑图、数据可视化、UML图、电路图等领域,尤其适用于需要在线编辑和协作的...

    mxgraph editor

    **mxgraph Editor** 是一款基于JavaScript的开源图形编辑器,专为绘制流程图、工作流、拓扑图等图表设计。它使用了mxGraph库,一个功能强大的图形渲染和操作库,提供了丰富的图形编辑功能。 **mxGraph核心概念:** ...

    mxgraph.zip

    每个图形元素(节点、边、属性等)都可以被映射到XML元素上,这样就可以方便地保存和加载图形状态。解析XML文件时,mxUtils.parseXml方法可以将XML字符串转换为DOM文档,然后通过mxObjectCodec.decode方法将DOM元素...

    mxGraph中文文档.md

    mxgraph.js中文文档是一个官方的api,翻译来源于sunflower(github: https://github.com/SunInfoFE),提供给更多的开发者参考和共享源码资源!

    mxGraph的一些例子

    - **其他格式**:通过mxGraph提供的工具,可以将图形转换为其他格式,如图片(PNG、SVG)或者XML。 5. **示例** - `examples`目录下的文件展示了如何使用mxGraph创建各种图形应用程序。例如: - `grapheditor....

    mxGraph绘图插件

    mxGraph是一款强大的JavaScript图形库,主要用于创建交互式图表和图形应用程序。它提供了丰富的API和功能,使得开发者能够轻松地在Web浏览器中构建复杂的图形编辑器和流程图工具。这款库以其灵活性、性能和易用性...

    mxGraph JS 绘图组件

    mxGraph 是一个 JS 绘图组件适用于需要在网页中设计/编辑 Workflow/BPM 流  程图、图表、网络图和普通图形的 Web 应用程序。mxgraph 下载包中包括用  javescript 写的前端程序,也包括多个和后端程序(java/C#等等)...

    mxgraph 3.1.2.1 eval

    mxgraph 是一个强大的JavaScript图形库,它允许开发者在Web应用中创建交互式、可定制的图形界面。这个库尤其适合构建流程图、网络拓扑图、UML模型和其他类型的图表。"mxgraph 3.1.2.1 eval"可能是该库的一个评估版本...

    mxGraph web javaScript

    mxGraph还支持图形的导入和导出,通常可以导出为常见的图形格式如SVG、PNG,或者导出为JSON、XML等结构化数据,便于保存和共享。 综上所述,mxGraph是一个强大且全面的JavaScript库,适合开发各种类型的图形界面,...

    mxGraph流程图js包

    7. **导入导出**:mxGraph支持XML格式的数据交换,可以将图形布局保存到文件,或者从文件加载图形,便于数据持久化和分享。 8. **API文档和社区**:mxGraph官网提供详尽的API文档,帮助开发者快速上手。同时,活跃...

    mxGraph压缩包

    7. **导入和导出**:mxGraph支持XML格式的图文件,可以用于保存和加载图形状态。 8. **插件和扩展**:mxGraph的可扩展性很强,可以通过编写插件添加自定义功能。 在学习和使用mxGraph的过程中,一定要多参考示例...

    mxgraph1.02WEB图形设计

    mxgraph1.02版本提供了绘制、编辑和保存流程图的功能,用户可以通过拖拽图形元素、设置属性和连接节点来构建流程。这在项目管理、业务流程分析和系统设计中非常实用。 4. **商用许可**:虽然mxgraph是开源的,但其...

    mxGraph开发入门指南

    mxGraph 是一款强大的JavaScript绘图组件,主要用于在Web应用程序中创建和编辑流程图、图表、网络图以及其他图形。它不仅提供了前端的JavaScript实现,还包含了与后端多种语言(如Java、C#)集成的示例,使得开发者...

Global site tag (gtag.js) - Google Analytics