android 的数学公式图片转换
在应用中的数学公式是不能直接以文本显示和输入的,包括在一些学习类网站上看到的公式,他们都是以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 的数学公式图片转换的更多相关文章
- android将drawable下的图片转换成bitmap
将drawable下的图片转换成bitmap 1. Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.xx ...
- Android 将drawable下的图片转换成bitmap、Drawable
将drawable下的图片转换成bitmap . Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.xxx ...
- Android PNG透明图片转JPG格式背景变黑
Android PNG透明图片转JPG格式背景变黑 在上传图片是,需要把PNG格式转换成JPG格式的,但是在遇上透明背景时,转过来就变成黑色底图了! 原因是PNG支持透明图而 JPG格式不支持透明底 ...
- 【转】Picasso – Android系统的图片下载和缓存类库
来源:http://blog.chengyunfeng.com/?p=492 另一篇参考:http://blog.csdn.net/xu_fu/article/details/17043231 Pic ...
- Picasso – Android系统的图片下载和缓存类库
Picasso – Android系统的图片下载和缓存类库 Picasso 是Square开源的一个用于Android系统下载和缓存图片的项目.该项目和其他一些下载图片项目的主要区别之一是:使用4.0 ...
- java 图片转换成base64字符串
import java.io.ByteArrayOutputStream; import java.io.FileInputStream;import java.io.FileOutputStream ...
- Android常用的图片加载库
Android常用的图片加载库 前言:图片加载涉及到图片的缓存.图片的处理.图片的显示等.四种常用的图片加载框架,分别是Fresco.ImageLoader. Picasso. Glide. Uni ...
- Python开发GUI实战:图片转换素描画工具!
奋斗没有终点 好好学习72变,因为将来 没有人能替你阻挡81难 . 生如蝼蚁,当有鸿鹄之志: 命如纸薄,应有不屈之心 . 今天被这句话触动了,所以开篇分享给大家.鸡汤有毒,但有时大家却靠它激励自己 ...
- android listview展示图片
最近学习android开发,感触颇多,和网站开发对比,还是有很大的差距,在这里记录一下. android listview展示图片 在网站开发上,展示图片非常简单,一个HTML img标签就搞定,加上 ...
随机推荐
- 事件:卸载事件(onunload)
这是几点应卸载事件的说明 ①目前试了Firefox.Google Chrome.IE三个浏览器,该事件只对IE起作用. ②onunload事件对于刷新页面和超链接跳转其他页面情况有效,对于关闭页面无效 ...
- 运行easy_install安装python相关程序时提示failed to create process
运行easy_install安装python相关程序时提示failed to create process,因为安装了两个python,卸载了的那个目录没删除,删除了另外的python目录后这个问题就 ...
- WPF触发器的使用
WPF中定义了五个触发器类:Trigger.MultiTrigger.DataTrigger.multiDataTrigger.EventTrigger.下面我来介绍一下怎么使用这几个触发器的使用方法 ...
- 忘记BIOS超级管理员密码,怎么破解?
[请尊重原创版权,如需引用,请注明来源及地址] 本人就喜欢没事瞎折腾,动动手活动活动筋骨没坏处,前不久非常便宜的弄到一玩具 ThinkPad T400(公司处理品),外观还算不错,除了电源适配器是坏的 ...
- 用纯css改变下拉列表select框的默认样式
http://ourjs.com/detail/551b9b0529c8d81960000007 在这篇文章里,我将介绍如何不依赖JavaScript用纯css来改变下拉列表框的样式. 问题的提出 事 ...
- js-url打开方式
引用自 : 老张的博客 *.location.href 用法: top.location.href="url" 在顶层页面打开url(跳出框架) self.loc ...
- .NET程序优化
一.数据库操作 1. 用完马上关闭数据库连接 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证, 比较耗费服务器资 源.ASP.NET 中提供了连 ...
- clob型不能用 distinct,以及转换clob类型方法
举例clob型不能用 distinct public List<WorkingPaper> findAssignedWorkPapers(String projectId, String ...
- android创建桌面快捷方式(启动目标非项目的启动页)
1.布局文件中,目标Activity加入以下filter <intent-filter> <action android:name="an ...
- JavaWeb技术(一):JDBC简介
一. JDBC简介 1. Java Database Connectivity(JDBC) 使用JDBC可以对数据库进行访问 2. JDBC的核心接口 1)DriverManager 驱动管理器接口 ...