基于Java的MathML转图片的方法(示例代码)

 更新时间:2021年06月23日 11:10:45   作者:布禾  
最近接到一个新需求mathML转图片怎么实现呢?刚开始还真是蒙圈了,不知道怎么实现,今天小编记录一种基于Java的MathML转图片的方法,感兴趣的朋友一起看看吧

Maven依赖:

<dependency>
	<groupId>de.rototor.jeuclid</groupId>
	<artifactId>jeuclid-core</artifactId>
	<version>3.1.14</version>
</dependency>

示例:

@Test
public void testMathMlToImg() throws IOException {
	//MathML字符串
	String mathStr = "<math xmlns=\"http://www.w3.org/1998/Math/MathML\">\n" +
			"        <mi>f</mi>\n" +
			"            <mo>(</mo>\n" +
			"            <mi>x</mi>\n" +
			"            <mo>)</mo>\n" +
			"            <mo>&gt;</mo>\n" +
			"            <mfrac>\n" +
			"                <msqrt>\n" +
			"                    <mn>2</mn>\n" +
			"                </msqrt>\n" +
			"                <mn>8</mn>\n" +
			"            </mfrac>\n" +
			"            <mo>+</mo>\n" +
			"            <mn>1</mn>\n" +
			"        </math>";
	//创建转换器
	Converter converter = Converter.getInstance();
	//创建layoutContext并设置相关参数
        //参数设置可以参考net.sourceforge.jeuclid.context.Parameter类
        //参数默认值可以参考LayoutContextImpl类构造方法
	LayoutContextImpl layoutContext = (LayoutContextImpl) LayoutContextImpl.getDefaultLayoutContext();
	//设置公式字体大小,默认12.0pt
	layoutContext.setParameter(Parameter.MATHSIZE, 30);
	//设置公式颜色,默认黑色
	layoutContext.setParameter(Parameter.MATHCOLOR, Color.RED);
	//转换
	Dimension dimension = converter.convert(mathStr, new FileOutputStream("f:/1.png"), "image/png", layoutContext);
	if(dimension != null){
		System.out.println("图片转换成功!高:" + dimension.getHeight() + " 宽:" + dimension.getWidth());
	}
}

输出结果:

图片转换成功!高:70.0 宽:149.0

转换结果如下:

关于outFileType参数的取值,支持以下几种:

image/png
image/vnd.wap.wbmp
image/x-png
image/jpeg
image/tiff
image/bmp
image/gif

以上就是基于Java的MathML转图片的方法(示例代码)的详细内容,更多关于Java MathML转图片的资料请关注脚本之家其它相关文章!

相关文章

  • Java多线程正确使用倒计时协调器CountDownLatch方法详解

    Java多线程正确使用倒计时协调器CountDownLatch方法详解

    这篇文章主要为大家介绍了Java多线程倒计时协调器CountDownLatch的正确使用方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • 详解SpringMVC组件之HandlerMapping(二)

    详解SpringMVC组件之HandlerMapping(二)

    这篇文章主要介绍了详解SpringMVC组件之HandlerMapping(二),HandlerMapping组件是Spring MVC核心组件,用来根据请求的request查找对应的Handler,在Spring MVC中,有各式各样的Web请求,每个请求都需要一个对应的Handler来处理,需要的朋友可以参考下
    2023-08-08
  • java利用mybatis拦截器统计sql执行时间示例

    java利用mybatis拦截器统计sql执行时间示例

    这篇文章主要介绍了java利用mybatis拦截器统计sql执行时间示例,该拦截器拦截mybatis的query和update操作,能统计sql执行时间
    2014-03-03
  • java中怎么将多个音频文件拼接合成一个

    java中怎么将多个音频文件拼接合成一个

    在Java中,将多个音频文件拼接成一个通常需要使用一些专门的音频处理库,因为Java标准库并不直接支持音频文件的合并,一个常用的库是JAVE2(Java Audio Video Encoder)或JLayer(用于MP3)结合JavaFX(如果用于简单的WAV文件)或其他类似的库
    2024-06-06
  • java 使用策略模式操作JDBC数据库

    java 使用策略模式操作JDBC数据库

    这篇文章主要介绍了java 使用策略模式操作JDBC数据库的相关资料,这里提供实例实现对JDBC数据库的操作增删改查的功能,需要的朋友可以参考下
    2017-08-08
  • 关于Springboot | @RequestBody 接收到的参数对象属性为空的问题

    关于Springboot | @RequestBody 接收到的参数对象属性为空的问题

    这篇文章主要介绍了关于Springboot | @RequestBody 接收到的参数对象属性为空的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • 详解Java抛出和声明异常的代码实现

    详解Java抛出和声明异常的代码实现

    我们在编写代码时,有时候因为某些原因,并不想在这个方法中立即处理产生的异常,也就是说并不想进行异常的捕获,接下来小编就来教会大家该如何进行异常的抛出,需要的朋友可以参考下
    2023-08-08
  • JavaEE Cookie的基本使用细节

    JavaEE Cookie的基本使用细节

    本章我们将学习会话跟踪技术中的Cookie与Session,它在我们整个JavaEE的知识体系中是非常重要的,本节我们先介绍Cookie,废话不多说,直接上正文
    2022-12-12
  • SpringBoot中实现异步调用@Async详解

    SpringBoot中实现异步调用@Async详解

    这篇文章主要介绍了SpringBoot中实现异步调用@Async详解,在SpringBoot的日常开发中,一般都是同步调用的,但实际中有很多场景非常适合使用异步来处理,需要的朋友可以参考下
    2024-01-01
  • Java中Klass模型与类加载的详细机制

    Java中Klass模型与类加载的详细机制

    这篇文章主要介绍了Java中Klass模型与类加载的详细机制,java语言是在jvm中运行而jvm是不认识java代码的我们使用javac编译的class文件jvm是不认识的 所以有一个类加载的动作 这个动作就是把class字节码拼装成一个klass类型,需要的朋友可以参考下
    2023-08-08

最新评论