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,心是透明的,因为雨慢慢的停了……
分享到:
相关推荐
5. **保存图片**:将BufferedImage对象保存为PNG、JPEG或其他图片格式,然后返回给前端。 在Linux服务器部署时,可能会遇到中文字体显示问题。由于Linux默认可能不包含某些中文字体,因此在渲染图形时可能会出现...
很抱歉,根据您提供的信息,"MXGRAPH"似乎与音乐文件"陈奕迅 - 不要说话.mp3"、"陈奕迅 - 不如这样.mp3"、"陈奕迅 - 不如不见.mp3"并不相关,这看起来更像一个音乐文件的列表而不是IT行业的专业知识点。MXGRAPH通常...
在IT领域,自定义图形是实现用户界面个性化和专业化的关键元素之一。`mxgraph` 是一个强大的JavaScript库,用于创建交互式图形应用程序。本文将深入探讨如何在`mxgraph` 中实现自定义的双边框长方形,也就是所谓的`...
4. **数据存储和恢复**:图形数据的序列化和反序列化,通常以JSON格式进行,便于保存和加载图形布局。 5. **撤销/重做机制**:通过记录和回放用户操作,实现图形编辑的历史记录。 在探索这个Demo时,你可以尝试创建...
mxGraph是一个JS绘图组件适用于需要在网页中设计/编辑Workflow/BPM流程图、图表、网络图和普通图形的Web应用程序。mxgraph下载包中包括用javescript写的前端程序,也包括多个和后端程序(java/C#等等)集成的例子。以下...
**mxgraph API与Demo详解** mxGraph是一款强大的JavaScript图形库,用于绘制和编辑流程图、组织结构图等复杂图表。它提供了丰富的API,使得开发者能够轻松地在Web应用中实现图形化界面。本文将深入探讨mxGraph API...
6. **保存和加载状态**:`mxGraph`支持将图形状态序列化,以便于保存和加载。 **五、应用场景** `mxGraph`广泛应用于业务流程图、网络拓扑图、数据可视化、UML图、电路图等领域,尤其适用于需要在线编辑和协作的...
**mxgraph Editor** 是一款基于JavaScript的开源图形编辑器,专为绘制流程图、工作流、拓扑图等图表设计。它使用了mxGraph库,一个功能强大的图形渲染和操作库,提供了丰富的图形编辑功能。 **mxGraph核心概念:** ...
每个图形元素(节点、边、属性等)都可以被映射到XML元素上,这样就可以方便地保存和加载图形状态。解析XML文件时,mxUtils.parseXml方法可以将XML字符串转换为DOM文档,然后通过mxObjectCodec.decode方法将DOM元素...
mxgraph.js中文文档是一个官方的api,翻译来源于sunflower(github: https://github.com/SunInfoFE),提供给更多的开发者参考和共享源码资源!
- **其他格式**:通过mxGraph提供的工具,可以将图形转换为其他格式,如图片(PNG、SVG)或者XML。 5. **示例** - `examples`目录下的文件展示了如何使用mxGraph创建各种图形应用程序。例如: - `grapheditor....
mxGraph是一款强大的JavaScript图形库,主要用于创建交互式图表和图形应用程序。它提供了丰富的API和功能,使得开发者能够轻松地在Web浏览器中构建复杂的图形编辑器和流程图工具。这款库以其灵活性、性能和易用性...
mxGraph 是一个 JS 绘图组件适用于需要在网页中设计/编辑 Workflow/BPM 流 程图、图表、网络图和普通图形的 Web 应用程序。mxgraph 下载包中包括用 javescript 写的前端程序,也包括多个和后端程序(java/C#等等)...
mxgraph 是一个强大的JavaScript图形库,它允许开发者在Web应用中创建交互式、可定制的图形界面。这个库尤其适合构建流程图、网络拓扑图、UML模型和其他类型的图表。"mxgraph 3.1.2.1 eval"可能是该库的一个评估版本...
mxGraph还支持图形的导入和导出,通常可以导出为常见的图形格式如SVG、PNG,或者导出为JSON、XML等结构化数据,便于保存和共享。 综上所述,mxGraph是一个强大且全面的JavaScript库,适合开发各种类型的图形界面,...
7. **导入导出**:mxGraph支持XML格式的数据交换,可以将图形布局保存到文件,或者从文件加载图形,便于数据持久化和分享。 8. **API文档和社区**:mxGraph官网提供详尽的API文档,帮助开发者快速上手。同时,活跃...
7. **导入和导出**:mxGraph支持XML格式的图文件,可以用于保存和加载图形状态。 8. **插件和扩展**:mxGraph的可扩展性很强,可以通过编写插件添加自定义功能。 在学习和使用mxGraph的过程中,一定要多参考示例...
mxgraph1.02版本提供了绘制、编辑和保存流程图的功能,用户可以通过拖拽图形元素、设置属性和连接节点来构建流程。这在项目管理、业务流程分析和系统设计中非常实用。 4. **商用许可**:虽然mxgraph是开源的,但其...
mxGraph 是一款强大的JavaScript绘图组件,主要用于在Web应用程序中创建和编辑流程图、图表、网络图以及其他图形。它不仅提供了前端的JavaScript实现,还包含了与后端多种语言(如Java、C#)集成的示例,使得开发者...