public DetectFacesResponse Recognise(RecogniseParams recParam)
        {
            //1. PutObjectIntoS3
            if (String.IsNullOrEmpty(recParam.PhotoName))
            {
                throw new Exception("AmazonRekognition Recognise method: photoName parameter must have value.");
            }

            var photoName = $"{recParam.PhotoName}_{DateTime.Now}";
            var pop       = new PutObjectParams()
            {
                PhotoName    = photoName,
                PhotoVersion = recParam.PhotoVersion,
                BucketName   = recParam.BucketName,
                RegEndpoint  = recParam.RegEndpoint,
                InputStrem   = recParam.InputStream,
                ContentType  = recParam.ContentType
            };

            var resp = PutObjectIntoS3(pop);

            if (resp == null)
            {
                throw new Exception($"PutObjectIntoS3 response is null in Recognise method PhotoName: {photoName}");
            }

            //2. DetectFaces
            var dfp = new DetectFaceParams()
            {
                PhotoName    = photoName,
                PhotoVersion = recParam.PhotoVersion,
                BucketName   = recParam.BucketName,
                RegEndpoint  = recParam.RegEndpoint
            };

            var detectFaceResp = DetectFaces(dfp);

            if (detectFaceResp == null)
            {
                throw new Exception($"DetectFaces response is null in Recognise method PhotoName: {photoName}");
            }

            return(detectFaceResp);
        }
Exemplo n.º 2
0
        public void RecogniseTest()
        {
            Stream stream = new MemoryStream(GetFileBytes());

            //Arrange
            var req = new RecogniseParams()
            {
                PhotoName    = "steve",
                PhotoVersion = String.Empty,
                BucketName   = "nvirginiadekanybucket",
                RegEndpoint  = RegionEndpoint.USEast1,
                InputStream  = stream,
                ContentType  = "image/jpeg"
            };

            //Act
            AmazonRekognition service = new AmazonRekognition(awsAccessKeyId, awsSecretAccessKey);
            var resp = service.Recognise(req);

            //Assert
            Assert.AreEqual(System.Net.HttpStatusCode.OK, resp.HttpStatusCode);
        }
        //public IHttpActionResult Recognize([FromBody]String base64String)
        public IHttpActionResult Recognize(RecognizeParam param)
        {
            if (String.IsNullOrEmpty(param.Base64String))
            {
                return(BadRequest("Bad request: base64String parameter must have value."));
            }

            var stream     = new MemoryStream();
            var photoBytes = Convert.FromBase64String(param.Base64String);

            using (var ms = new MemoryStream(photoBytes, 0, photoBytes.Length))
            {
                Image image = Image.FromStream(ms, true);
                image.Save(stream, ImageFormat.Jpeg);
            }

            var awsAccessKeyId     = ConfigurationManager.AppSettings["awsAccessKeyId"];
            var awsSecretAccessKey = ConfigurationManager.AppSettings["awsSecretAccessKey"];
            var bucketName         = ConfigurationManager.AppSettings["bucketName"];
            var photoName          = $"{DateTime.Now}_{Guid.NewGuid()}";

            var req = new RecogniseParams()
            {
                PhotoName    = photoName,
                PhotoVersion = "1",
                BucketName   = bucketName,
                RegEndpoint  = RegionEndpoint.USEast1,
                InputStream  = stream,
                ContentType  = "image/jpeg"
            };

            AmazonRekognition service = new AmazonRekognition(awsAccessKeyId, awsSecretAccessKey);
            var resp = service.Recognise(req);

            return(Ok(resp));
        }