1. 程式人生 > >人臉識別API-人臉屬性(java例子)

人臉識別API-人臉屬性(java例子)

人臉屬性

HTTP傳送類

package engine.demo;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import com.alibaba.fastjson.JSONObject;

public class HttpClientUtil {
    public static String sendPostRequestByJava(String reqURL, String sendData, int connectTimeout, int readTimeout) {
        HttpURLConnection httpURLConnection = null;
        OutputStream out = null;
        InputStream in = null;
        int httpStatusCode = 0;
        try {
            URL sendUrl = new URL(reqURL);
            httpURLConnection = (HttpURLConnection) sendUrl.openConnection();
            httpURLConnection.setRequestMethod("POST");
            httpURLConnection.setDoOutput(true);
            httpURLConnection.setUseCaches(false);
            httpURLConnection.setConnectTimeout(connectTimeout);
            httpURLConnection.setReadTimeout(readTimeout);
            httpURLConnection.setRequestProperty("Content-Type", "application/json");
            out = httpURLConnection.getOutputStream();
            out.write(sendData.getBytes());
            out.flush();
            httpStatusCode = httpURLConnection.getResponseCode();
            in = httpURLConnection.getInputStream();
            byte[] by = new byte[1024];
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            int len = -1;
            while ((len = in.read(by)) != -1) {
                bos.write(by, 0, len);
            }
            return bos.toString("utf-8");
        } catch (Exception e) {
            JSONObject json = new JSONObject();
            json.put("result", -10000);
            json.put("info", "http error");
            json.put("httpStatusCode", httpStatusCode);
            return json.toString();
        } finally {
            if (out != null) {
                try {
                    out.close();
                } catch (Exception e) {
                }
            }
            if (in != null) {
                try {
                    in.close();
                } catch (Exception e) {
                }
            }
            if (httpURLConnection != null) {
                httpURLConnection.disconnect();
                httpURLConnection = null;
            }
        }
    }

    public static String sendPostRequestByJava(String reqURL, String sendData) {
        return sendPostRequestByJava(reqURL, sendData, 30000, 30000);
    }
}

人臉屬性API封裝類

package engine.demo;

import com.alibaba.fastjson.JSONObject;

public class FaceAttribute {
	public static int Process(String url,byte[] image) {
		JSONObject json = new JSONObject();
		json.put("app_id", "system");
		json.put("app_secret", "12345");
		json.put("img", image);
		String response=HttpClientUtil.sendPostRequestByJava(url, json.toString());
		System.out.println(response);;
		return 0;
	}
}

傳送請求給伺服器

package engine.demo;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class App 
{
    public static void main( String[] args )
    {
    	//讀取一個本地jpg檔案
    	byte[] imageA=readFile("g:/1.jpg");
        //向伺服器傳送請求
    	FaceAttribute.Process("http://192.168.10.25:7100/face/tool/attribute", imageA);
    }
    
    public static byte[] readFile(String path){
    	File filePic = new File(path);
    	if(filePic.exists()){
	    	FileInputStream is=null;
	    	try {
				is = new FileInputStream(filePic);
				int i = is.available(); 
				byte data[] = new byte[i];  
				is.read(data); 
				is.close(); 
				return data; 
			} catch (Exception e) {
				if (is!=null){
					try {
						is.close();
					} catch (IOException e1) {
					}
				}
				return null;
			}
	    }else{
	    	return null;	
	    }
    }
}


返回結果

{
	"debugInfo": {
		"elapse": 189,
		"path": "/face/tool/attribute"
	},
	"faces": [{
		"age": 45,
		"gender": -1,
		"height": 104,
		"width": 104,
		"x": 282,
		"y": 59
	}, {
		"age": 28,
		"gender": -1,
		"height": 104,
		"width": 104,
		"x": 54,
		"y": 94
	}],
	"info": "success",
	"result": 0,
	"seq": "c14e20244bd44711bf45fe3241490d51"
}