java调用face++人脸检测和分析接口
import java.io.*; import java.util.Map; import java.util.HashMap; import java.util.Iterator; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.net.URL; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.ContentType; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.util.EntityUtils; public class FaceDetect { public static void main(String[] args) throws Exception { String urlpath = "/Users/sunxianyan/Desktop/test/input.csv"; File urlcsv = new File (urlpath); BufferedReader bufferedReader = new BufferedReader (new FileReader (urlpath)); String line = null; while ((line = bufferedReader.readLine ()) != null) { String[] item = line.split (","); String url = "https://api-cn.faceplusplus.com/facepp/v3/detect"; HashMap<String, String> map = new HashMap<> (); map.put ("api_key", "***"); map.put ("api_secret", "***"); map.put ("return_landmark", "1"); map.put ("return_attributes", "gender,age,smiling,headpose,facequality,blur,eyestatus,emotion,ethnicity,beauty,mouthstatus,eyegaze,skinstatus"); HashMap<String, byte[]> byteMap = new HashMap<> (); downloadByNIO2 (item[0], urlcsv.getParent () + File.separator + "temp", item[0].substring (item[0].lastIndexOf ("/") + 1)); File file = new File (urlcsv.getParent () + File.separator + "temp" + File.separator + item[0].substring (item[0].lastIndexOf ("/") + 1)); detectFace(url, map, file); } } protected static void detectFace(String url, HashMap<String, String> map, File file) throws Exception { CloseableHttpClient client = HttpClients.createDefault(); HttpPost post = new HttpPost(url); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); Iterator iter = map.entrySet ().iterator (); while (iter.hasNext ()) { Map.Entry<String, String> entry = (Map.Entry) iter.next (); String key = entry.getKey (); String value = entry.getValue (); builder.addTextBody(key, value); } builder.addBinaryBody("image_file", file, ContentType.MULTIPART_FORM_DATA, file.getName()); HttpEntity multipart = builder.build(); post.setEntity(multipart); CloseableHttpResponse response = client.execute(post); HttpEntity responseEntity = response.getEntity(); String sResponse=EntityUtils.toString(responseEntity, "UTF-8"); System.out.println("Post 返回结果"+sResponse); } //图片链接下载 public static void downloadByNIO2(String url, String saveDir, String fileName) { try (InputStream ins = new URL (url).openStream ()) { Path target = Paths.get (saveDir, fileName); Files.createDirectories (target.getParent ()); Files.copy (ins, target, StandardCopyOption.REPLACE_EXISTING); } catch (IOException e) { e.printStackTrace (); } } }