Exemplo n.º 1
0
        public static async Task <Predict> GetImgUrlPrediction(string accessToken, List <string> imgURLs)
        {
            ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateServerCertificate);

            //
            //  MESSAGE CONTENT
            //string postData = "client_id="+ clientId + "&client_secret="+ clientSecret + "&grant_type=client_credentials";
            List <PredictInput> inputs = new List <PredictInput>();

            foreach (string imgUrl in imgURLs)
            {
                inputs.Add(new PredictInput
                {
                    Data = new PredictImage
                    {
                        Image = new PredictImageData
                        {
                            Url = imgUrl
                        }
                    }
                });
            }
            var ins = new
            {
                Inputs = inputs
            };

            string postData = LowercaseJsonSerializer.SerializeObject(ins);

            byte[] byteArray = Encoding.UTF8.GetBytes(postData);

            //
            //  CREATE REQUEST
            HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(_apiEndPoint + _predictPath);

            Request.Method      = "POST";
            Request.KeepAlive   = false;
            Request.ContentType = "application/json";
            Request.Headers.Add("cache-control", "no-cache");
            Request.Headers.Add("authorization", "Bearer " + accessToken);

            Stream dataStream = await Request.GetRequestStreamAsync();

            await dataStream.WriteAsync(byteArray, 0, byteArray.Length);

            dataStream.Close();

            //
            //  SEND MESSAGE
            try
            {
                WebResponse Response = await Request.GetResponseAsync();

                StreamReader Reader       = new StreamReader(Response.GetResponseStream());
                string       responseLine = await Reader.ReadToEndAsync();

                Reader.Close();

                HttpStatusCode ResponseCode = ((HttpWebResponse)Response).StatusCode;
                if (!ResponseCode.Equals(HttpStatusCode.OK))
                {
                    Predict error = Newtonsoft.Json.JsonConvert.DeserializeObject <Predict>(responseLine);
                    return(error);
                }

                Predict predict = Newtonsoft.Json.JsonConvert.DeserializeObject <Predict>(responseLine);
                int     ind     = 0;
                foreach (string imgUrl in imgURLs)
                {
                    var outputs = predict.Outputs;
                    outputs[ind].Data.Concepts[0].ImageName = imgUrl;
                    ind++;
                }
                return(predict);
            }
            catch (WebException e)
            {
                using (WebResponse response = e.Response)
                {
                    HttpWebResponse httpResponse = (HttpWebResponse)response;
                    using (Stream data = response.GetResponseStream())
                        using (var reader = new StreamReader(data))
                        {
                            string  text  = reader.ReadToEnd();
                            Predict error = Newtonsoft.Json.JsonConvert.DeserializeObject <Predict>(text);
                            return(error);
                        }
                }
            }

            return(new Predict
            {
                Status = new PredictStatus
                {
                    Code = 0,
                    Description = "Undefined Error"
                }
            });
        }
Exemplo n.º 2
0
        public static async Task <Predict> GetFolderImgsPrediction(string accessToken, string folder_path)
        {
            ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateServerCertificate);

            //
            //  MESSAGE CONTENT
            //string postData = "client_id="+ clientId + "&client_secret="+ clientSecret + "&grant_type=client_credentials";
            List <PredictInput> inputs = new List <PredictInput>();
            var imgPaths = Directory.GetFiles(folder_path, "*.*", SearchOption.AllDirectories).ToList();

            foreach (string imgPath in imgPaths)
            {
                Bitmap source             = new Bitmap(imgPath);
                int    x                  = source.Width - 120;
                int    y                  = source.Height - 120;
                Bitmap CroppedImage       = source.Clone(new Rectangle(x, y, 120, 120), source.PixelFormat);
                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                CroppedImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                byte[] imageArray = ms.ToArray();
                //byte[] imageArray = System.IO.File.ReadAllBytes(imgPath);
                string base64ImageRepresentation = Convert.ToBase64String(imageArray);
                inputs.Add(new PredictInput
                {
                    Data = new PredictImage
                    {
                        Image = new PredictImageData
                        {
                            Base64 = base64ImageRepresentation
                        }
                    }
                });
            }
            var ins = new
            {
                Inputs = inputs
            };

            string postData = LowercaseJsonSerializer.SerializeObject(ins);

            byte[] byteArray = Encoding.UTF8.GetBytes(postData);

            //
            //  CREATE REQUEST
            HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(_apiEndPoint + _predictPath);

            Request.Method      = "POST";
            Request.KeepAlive   = false;
            Request.ContentType = "application/json";
            Request.Headers.Add("cache-control", "no-cache");
            Request.Headers.Add("authorization", "Bearer " + accessToken);

            Stream dataStream = await Request.GetRequestStreamAsync();

            await dataStream.WriteAsync(byteArray, 0, byteArray.Length);

            dataStream.Close();

            //
            //  SEND MESSAGE
            try
            {
                WebResponse Response = await Request.GetResponseAsync();

                StreamReader Reader       = new StreamReader(Response.GetResponseStream());
                string       responseLine = await Reader.ReadToEndAsync();

                Reader.Close();

                HttpStatusCode ResponseCode = ((HttpWebResponse)Response).StatusCode;
                if (!ResponseCode.Equals(HttpStatusCode.OK))
                {
                    Predict error = Newtonsoft.Json.JsonConvert.DeserializeObject <Predict>(responseLine);
                    return(error);
                }

                Predict predict = Newtonsoft.Json.JsonConvert.DeserializeObject <Predict>(responseLine);
                int     ind     = 0;
                foreach (string imgPath in imgPaths)
                {
                    var outputs = predict.Outputs;
                    outputs[ind].Data.Concepts[0].ImageName = imgPath;
                    ind++;
                }
                return(predict);
            }
            catch (WebException e)
            {
                using (WebResponse response = e.Response)
                {
                    HttpWebResponse httpResponse = (HttpWebResponse)response;
                    using (Stream data = response.GetResponseStream())
                        using (var reader = new StreamReader(data))
                        {
                            string  text  = reader.ReadToEnd();
                            Predict error = Newtonsoft.Json.JsonConvert.DeserializeObject <Predict>(text);
                            return(error);
                        }
                }
            }

            return(new Predict
            {
                Status = new PredictStatus
                {
                    Code = 0,
                    Description = "Undefined Error"
                }
            });
        }