在应用中的数学公式是不能直接以文本显示和输入的,包括在一些学习类网站上看到的公式,他们都是以gif图片的形式展示出来的。而怎么样生成各种各样的gif图片形式的数学公式呢,此处未作深入研究,我所知道的是

输入一些具有一定的规则的latex文本,然后再通过图片生成工具去解析latex字串并生成一个对应的gif公式文件。

本次Demo用到的转换服务的网站就是  http://www.codecogs.com/latex/about.php, 如果你胶转换图片的源代码(C++),那你就可以在本地完成这一工作了。

可以通过这个网站上提供的公式编辑器进行公式编辑获取到gif公式图片, 也可以通过http请求的方式去获取gif图片.

1、网站上的公式编辑 地址 http://latex.codecogs.com/eqneditor/editor-api.php, 就像这样

左边框框里的是latex文本, 右边会同时生成的gif图片,这个编辑器能让你很快的知道公式对应的latex文本写法,比较好用啊。

也可以去latex公式库里查找,根据各个字符的latex文本再拼接出来,这里给出一个链接,http://www.mohu.org/info/symbols/symbols.htm,在里面基本上可以找到你想要的公式的latex写法。

2、现在来开始我们的demo, 让android 客户端从服务器上取gif图片。

公式图片转换的请求很简单, 只要在http://latex.codecogs.com/gif.latex?后面跟上latex文本就可以了。比如 http://latex.codecogs.com/gif.latex?\tfrac{a} {ab}就能得到上述a/ab的图片了

在写url的时候一定要注意,RFC3986文档规定,Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符。因此url不允许\{}空格等字符出现,只要出现肯定报错,而在网页里

可以出现这些字符,那是因为浏览器自动将它们进行了编码,相信你们之前也应该注意到了浏览器地址栏里出现一些类似于%20%7d这样的符号吧,那就是编码后的16进制码。所以上述url必须要进行本地编码了。

demo的关键代码如下,像xml, activity那些平常的代码就不贴出来了,这个Demo也不复杂。

private final String host = "http://latex.codecogs.com/gif.latex?";
//此处进行16进制编码,这里只做了\ {}这4个符号编码
private String encode(String url){
url = url.replace("\\", "%5c").replace(" ", "%20")
.replace("{", "%7b").replace("}", "%7d");
return url;
}
// 加载图片
//etLatex是输入latex文本的edittext
String latexstr = etLatex.getText().toString().trim();
String url = host + latexstr;
//http请求用的是xutils3, ivMath是显示公式图片的imageview
x.image().bind(ivMath, encode(url), options, new RequestDataCallback<Drawable>() { @Override
protected void success(Drawable drawable) {
LogUtil.e("下载成功");
} @Override
protected void fail() {
LogUtil.e("下载出错," );
} @Override
protected void finish() {
LogUtil.e("下载完成");
} @Override
public void onCancelled(CancelledException arg0) {
LogUtil.e("下载取消");
}
});

最后来看看效果

android 的数学公式图片转换的更多相关文章

  1. android将drawable下的图片转换成bitmap

    将drawable下的图片转换成bitmap 1. Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.xx ...

  2. Android 将drawable下的图片转换成bitmap、Drawable

    将drawable下的图片转换成bitmap . Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.xxx ...

  3. Android  PNG透明图片转JPG格式背景变黑

    Android  PNG透明图片转JPG格式背景变黑 在上传图片是,需要把PNG格式转换成JPG格式的,但是在遇上透明背景时,转过来就变成黑色底图了! 原因是PNG支持透明图而 JPG格式不支持透明底 ...

  4. 【转】Picasso – Android系统的图片下载和缓存类库

    来源:http://blog.chengyunfeng.com/?p=492 另一篇参考:http://blog.csdn.net/xu_fu/article/details/17043231 Pic ...

  5. Picasso – Android系统的图片下载和缓存类库

    Picasso – Android系统的图片下载和缓存类库 Picasso 是Square开源的一个用于Android系统下载和缓存图片的项目.该项目和其他一些下载图片项目的主要区别之一是:使用4.0 ...

  6. java 图片转换成base64字符串

    import java.io.ByteArrayOutputStream; import java.io.FileInputStream;import java.io.FileOutputStream ...

  7. Android常用的图片加载库

     Android常用的图片加载库 前言:图片加载涉及到图片的缓存.图片的处理.图片的显示等.四种常用的图片加载框架,分别是Fresco.ImageLoader. Picasso. Glide. Uni ...

  8. Python开发GUI实战:图片转换素描画工具!

    奋斗没有终点 好好学习72变,因为将来 没有人能替你阻挡81难 . 生如蝼蚁,当有鸿鹄之志: 命如纸薄,应有不屈之心 . ​ 今天被这句话触动了,所以开篇分享给大家.鸡汤有毒,但有时大家却靠它激励自己 ...

  9. android listview展示图片

    最近学习android开发,感触颇多,和网站开发对比,还是有很大的差距,在这里记录一下. android listview展示图片 在网站开发上,展示图片非常简单,一个HTML img标签就搞定,加上 ...

随机推荐

  1. Storm-隔离调度器

    这个版本的亮点是新的“隔离调度器”,使得在一些拓扑中分享集群变得简单和安全.隔离调度程序允许您指定哪些拓扑应该“孤立”, 这意味着它们运行在集群中的一组专用的机器,没有其他的拓扑将运行.这些孤立的拓扑 ...

  2. 56992 vuser_init.c(12): Error: Socket descriptor not found.

    Loadrunner 运行场景时提示" vuser_init.c(12): Error: Socket descriptor not found.  Hint: the problem mi ...

  3. js手机号码和电话号码验证正则表达式

    /******************** 函数名称:IsTelephone 函数功能:固话,手机号码检查函数,合法返回true,反之,返回false 函数参数:obj,待检查的号码 检查规则: (1 ...

  4. oracle 空间大小查询

    一.表空间大小 select b.file_name 物理文件名, b.tablespace_name 表空间, b.bytes / 1024 / 1024 大小M, (b.bytes - sum(n ...

  5. 解决:NoSuchAlgorithmException: Algorithm HmacSHA1 not available

    windows下运行macInstance = Mac.getInstance("HmacSHA1");完全正常,Linux下则出现异常: java.security.NoSuch ...

  6. 在Android项目中引入MuPdf

    由于公司手机App要加入一个附件查看功能,需要查看PDF文件,在网上找了许多第三方工具,最后选择了MuPDF. 更多第三方工具可以查看大神总结的:http://www.cnblogs.com/poke ...

  7. XmlDocument解析Soap格式文件案例:

    private static string Analysis(string strResult) { var doc = new System.Xml.XmlDocument(); //加载soap文 ...

  8. django单元测试

        django 单元测试小结 django 测试 从前很少写单元测试了,特别是web应用.最近不知不觉喜欢起来这个事情了,发现单元测试对于软件的模块,正交性有很大促进作用,因为函数,模块写的不合 ...

  9. notepad++的CoolFormat代码格式化插件使用

    因为notepad++的NppAStyle插件只支持格式化C.C++.C#.Java这四种编程语言的代码,所以本人推荐使用这个CoolFormat的插件,相比于NPPAStyle,CoolFormat ...

  10. Symmetric Difference

    function sym(args) { //return args; var arr = []; for(var i = 0; i < arguments.length; i++){ arr. ...