【Java】增加EasyDL接口到SDK
756665228 发布于2018-06-15 16:28 浏览:1824 回复:1
4
收藏

上线的EasyDL接口,自己调用还需要去获取AccessToken,觉得麻烦。但是呢,SDK自身里面又不会有自己的接口地址。怎么办呢。

本文就基于Java语言SDK简单搞一下

JavaSDK大家可以通过下载jar。或者pom引入

 

  • pom引入百度的JavaSDK 最新已经4.4.0


    com.baidu.aip
    java-sdk
    4.4.0

看了相关介绍。EasyDL接口属于图像识别模块下面的。那我们就继承AipImageClassify来实现EasyDL接口识别。这样的好处是。你初始化AipImageClassifyByCustom即可调用AipImageClassify下面本身有的方法。这样单例加载更高效哦

参考已有的接口方法。可以知道需要额外加一个接口地址常量值。但是接口要求是json格式拼接。又需要参考nlp下面相关方法的实现。

  • AipImageClassifyByCustom代码就诞生了
import java.io.IOException;
import java.util.HashMap;
import org.json.JSONObject;
import com.baidu.aip.http.AipRequest;
import com.baidu.aip.http.EBodyFormat;
import com.baidu.aip.http.Headers;
import com.baidu.aip.http.HttpCharacterEncoding;
import com.baidu.aip.http.HttpContentType;
import com.baidu.aip.imageclassify.AipImageClassify;
import com.baidu.aip.util.Base64Util;
import com.baidu.aip.util.Util;
/**
 * EasyDL接口封装
 * @author 小帅丶
 */
public class AipImageClassifyByCustom extends AipImageClassify{
	//接口地址
	private  static final String EasyDL_URL="https://aip.baidubce.com/rpc/2.0/ai_custom/v1/classification/你自己的名字哦";
	public AipImageClassifyByCustom(String appId, String apiKey,String secretKey) {
		super(appId, apiKey, secretKey);
	}

	/**
	 * EasyDL接口调用
	 * @param image  图片的base64内容
	 * @param top_num  返回的个数
	 * @return JSONObject
	 */
	public JSONObject easydlClassify(String image, int top_num) {
		AipRequest request = new AipRequest();
		preOperation(request);
		request.addBody("image", image);
		request.addBody("top_num", top_num);
		request.setUri(EasyDL_URL);
		request.addHeader(Headers.CONTENT_ENCODING,
				HttpCharacterEncoding.ENCODE_UTF8);
		request.addHeader(Headers.CONTENT_TYPE, HttpContentType.JSON_DATA);
		request.setBodyFormat(EBodyFormat.RAW_JSON);
		postOperation(request);
		return requestServer(request);
	}
	/**
	 * EasyDL接口调用
	 * @param filePath  图片的二进制数据
	 * @param top_num  返回的个数
	 * @return JSONObject
	 */
	public JSONObject easydlClassify(byte[] file, int top_num) {
		String image = Base64Util.encode(file);
		return easydlClassify(image, top_num);
	}
	/**
	 * EasyDL接口调用
	 * @param filePath  图片的本地路径
	 * @param top_num  返回的个数
	 * @return JSONObject
	 * @throws Exception 
	 */
	public JSONObject easydlClassifyByFilePath(String filePath, int top_num) throws Exception {
		String image = Base64Util.encode(Util.readFileByBytes(filePath));
		return easydlClassify(image, top_num);
	}
}

 

  • 来一个调用的示例代码
public class TestCustom {
	public static void main(String[] args) throws Exception {
		AipImageClassifyByCustom aipImageClassifyByCustom = new AipImageClassifyByCustom("APPID", "APIKEY", "SECRETKEY");
		String image = Base64Util.encode(FileUtil.readFileByBytes("G:/number/3.jpg"));
		JSONObject jsonObject = aipImageClassifyByCustom.easydlClassify(image,5);
		System.out.println(jsonObject);
	}
}

 

  • 看下返回数据是正确的哦
{
    "log_id": 3519395194452212700, 
    "results": [
        {
            "score": 0.9999839067459106, 
            "name": "3"
        }, 
        {
            "score": 0.000011473276572360191, 
            "name": "7"
        }, 
        {
            "score": 0.000002065923581540119, 
            "name": "9"
        }, 
        {
            "score": 9.984000826079864e-7, 
            "name": "5"
        }, 
        {
            "score": 8.689310107001802e-7, 
            "name": "1"
        }
    ]
}

 

好了以上就是关于JavaSDK加入EasyDL接口的方法

收藏
点赞
4
个赞
共1条回复 最后由荒墨丶迷失回复于2018-06-26 12:15
#2荒墨丶迷失回复于2018-06-26 12:15:22

JavaSDK加入EasyDL接口的方法 非常详细~

1
TOP
切换版块