一开始自己也看了很久,查看了一下人家写的代码,然后自己重新理解了一下,所以决定把我的理解分享出来。
首先我们登陆百度AI平台,查看文字识别的文档—调用方式
这里会告诉你一些参数要求,我们先关注请求限制的那部分,说明了图片要经过base64编码后再进行URLEncode.那我们先准备一个类进行图片的编码。
Base64code:
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import org.apache.tomcat.util.codec.binary.Base64;
import sun.misc.BASE64Encoder;
public class Base64Code {
/**
* 将一张本地图片转化成Base64字符串
*
* @param imgPath 本地图片的路径
* @return 图片转化base64后再UrlEncode结果,这是百度api告诉我们的调用方式
*/
public static String getImageStrFromPath(String imgPath) {
InputStream in;
byte[] data = null;
// 读取图片字节数组
try {
in = new FileInputStream(imgPath);
data = new byte[in.available()];//in.available()返回的是数据流的长度
in.read(data);//查看源码发现这个方法才是真正为了给data赋值,上面的只是创建大小
in.close();
} catch (IOException e) {
e.printStackTrace();
}
// 对字节数组Base64编码
Base64 encoder = new Base64();
// 返回Base64编码再经过URLEncode编码的字节数组字符串
return URLEncoder.encode(encoder.encodeAsString(data));
}
}
搞好了编码,我们接着看下面得调用方式
这里告诉我们要获取access_token,而这里获取代码上面直接给出了,我这里用我自己的,因为我自己加一些自己的注释。
package com.ai;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection