.net 通过ImgUrl调用fcae++验证图片是否有人脸
来源:互联网 发布:淘宝300解id锁可以退款 编辑:程序博客网 时间:2024/05/22 15:32
.net 通过ImgUrl调用fcae++验证图片是否有人脸
face++官网:https://console.faceplusplus.com.cn/documents/4888373
官方api说明:
第一种方法:前台ajax直接请求(确定容易暴露apikey,按访问量收费啊,当然有加密的方式这里不做介绍了),废话不多说直接上代码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script><script> $(document).ready( test() ); function test() { $.ajax({ //提交数据的类型 POST GET type: "POST", //提交的网址 url: "https://api-cn.faceplusplus.com/facepp/v3/detect", //提交的数据 data: { api_key: "自己买的就不告诉你们了(*^__^*) 嘻嘻……", api_secret: "自己买的就不告诉你们了(*^__^*) 嘻嘻……", image_url: "https://bj-mc-prod-asset.oss-cn-beijing.aliyuncs.com/mc-official/images/demo/demo-pic1.jpg", return_landmark: "1", return_attributes: "gender,age,smiling,headpose,facequality,blur,eyestatus,ethnicity,emotion" }, //返回数据的格式 datatype: "json", //"xml", "html", "script", "json", "jsonp", "text". //在请求之前调用的函数 beforeSend: function () { $("#msg").html("logining"); }, //成功返回之后调用的函数 success: function (data) { $("#msg").html(data); }, //调用执行后调用的函数 complete: function (XMLHttpRequest, textStatus) { alert(XMLHttpRequest.responseText); alert(textStatus); //HideLoading(); }, //调用出错执行的函数 error: function () { //请求出错处理 } }); }</script><head runat="server"> <title></title></head><body> <form id="form1" runat="server"> <div id="msg"> </div> </form></body></html>
返回说明:
第二种方法:后台调用(WebRequest,可以做成webservice或者api 随你怎么折腾,我这里用webservice),上代码
namespace TestService.FaceWebService{ /// <summary> /// FaceCheckService 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 // [System.Web.Script.Services.ScriptService] public class FaceCheckService : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World"; } /// <summary> /// 根据前台传进来的URL验证图片是否有人脸 /// 0:无 /// 1:有 /// </summary> /// <param name="imageUrl"></param> /// <returns></returns> [WebMethod] public int FaceCheck(string imageUrl) { int reset = 0; try { var api_key = System.Configuration.ConfigurationManager.AppSettings["api_key"].ToString(); var api_secret = System.Configuration.ConfigurationManager.AppSettings["api_secret"].ToString(); var return_landmark = System.Configuration.ConfigurationManager.AppSettings["return_landmark"].ToString(); var posturl = System.Configuration.ConfigurationManager.AppSettings["postfaceurl"].ToString(); Encoding encoding = Encoding.GetEncoding("UTF-8"); IDictionary<string, string> parameters = new Dictionary<string, string>(); parameters.Add("api_key", api_key); //调用此API的API Key parameters.Add("api_secret", api_secret); //调用此API的API Secret parameters.Add("image_url", imageUrl); parameters.Add("return_landmark", return_landmark); HttpWebResponse response = CreatePostHttpResponse(posturl, parameters, encoding); //打印返回值 Stream stream = response.GetResponseStream(); //获取响应的字符串流 StreamReader sr = new StreamReader(stream); //创建一个stream读取流 string html = sr.ReadToEnd(); //从头读到尾,放到字符串html //序列化face++人脸验证的匿名对象 var svcResult = Brick.Common.Serialization.JavaScriptHelper.Deserialize<FaceEntity>(html);//这里序列化用你们自己的 if (svcResult.IsNotNull()) { reset = svcResult.faces.Length; } } catch (Exception ex) { reset = 0; Log.Error(string.Format("error-{0},StackTrace--{1}", ex.Message, ex.StackTrace)); } return reset; } private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { return true; //总是接受 } public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters, Encoding charset) { HttpWebRequest request = null; //HTTPSQ请求 ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); request = WebRequest.Create(url) as HttpWebRequest; request.ProtocolVersion = HttpVersion.Version10; request.Method = "POST"; request.Accept = "*/*"; request.ContentType = "application/x-www-form-urlencoded"; request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0"; //如果需要POST数据 if (!(parameters == null || parameters.Count == 0)) { StringBuilder buffer = new StringBuilder(); int i = 0; foreach (string key in parameters.Keys) { if (i > 0) { buffer.AppendFormat("&{0}={1}", key, parameters[key]); } else { buffer.AppendFormat("{0}={1}", key, parameters[key]); } i++; } byte[] data = charset.GetBytes(buffer.ToString()); using (Stream stream = request.GetRequestStream()) { stream.Write(data, 0, data.Length); } } return request.GetResponse() as HttpWebResponse; } }}反序列化对象namespace TestService.FaceWebService{ /// <summary> /// 返回值说明 /// </summary> public class FaceEntity { public string request_id { get; set; } public Object[]faces { get; set; } public string image_id { get; set; } public string time_used { get; set; } public string error_message { get; set; } }}
序列化(怎么用我想应该知道吧):
Newtonsoft.Json.JsonConvert.DeserializeObject<T>(jsonString)
阅读全文
0 0
- .net 通过ImgUrl调用fcae++验证图片是否有人脸
- ASP.net通过http调用验证码短信接口源码
- .net中的图片验证
- .net验证图片做法
- .net 图片验证码
- .net图片验证码
- 根据qq中是否有人@你,来决定是否调用小黄鸡接口进行自动回复
- 是否有人会想起
- 通过javamail 验证邮箱是否有效
- 网站验证图片制作。net
- asp.net 图片验证码
- asp.net图片验证码
- .net生成图片验证码
- ASP.NET图片验证码
- asp.net之验证图片
- java 通过Webservice调用.net
- bootstrapValidator代码中开启验证和判断验证是否通过
- JS通过onerror判断图片是否存在
- ThinkPHP3.2 --- 中文乱码问题
- Python 遍历文件夹中的文件,并将文件放到列表中
- java中钩子方法简单使用
- 二语句法复杂度分析器L2SCA的使用,下载,指标
- 51nod 1800 汉诺塔
- .net 通过ImgUrl调用fcae++验证图片是否有人脸
- 再论RBF神经网路
- 一些代码静态检查工具的简介
- python逐行读取文件内容的三种方法
- HTML学习
- Angular2使用ng2-file-upload上传文件
- vue中遇到的坑
- Python笔记
- 二、C_base——数据类型/运算符