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);
        }
コード例 #2
0
        public async Task <ObjectID> PutObject(CancellationToken context, PutObjectParams param, CallOptions options = null)
        {
            var object_client = new ObjectService.ObjectServiceClient(channel);
            var obj           = param.Object;
            var call          = object_client.Put(cancellationToken: context);
            var opts          = DefaultCallOptions.ApplyCustomOptions(options);
            var req_stream    = call.RequestStream;

            var req  = new PutRequest();
            var body = new PutRequest.Types.Body();

            req.Body = body;
            var address = new Address
            {
                ContainerId = obj.Header.ContainerId,
                ObjectId    = obj.ObjectId,
            };
            var meta = opts.GetRequestMetaHeader();

            AttachObjectSessionToken(opts, meta, address, ObjectSessionContext.Types.Verb.Put);
            req.MetaHeader = meta;
            var init = new PutRequest.Types.Body.Types.Init
            {
                ObjectId  = obj.ObjectId,
                Signature = obj.Signature,
                Header    = obj.Header,
            };

            req.Body.Init = init;
            req.SignRequest(key);

            await req_stream.WriteAsync(req);

            int offset = 0;

            while (offset < obj.Payload.Length)
            {
                var end        = offset + Object.Object.ChunkSize > obj.Payload.Length ? obj.Payload.Length : offset + Object.Object.ChunkSize;
                var chunk      = ByteString.CopyFrom(obj.Payload.ToByteArray()[offset..end]);
        public PutObjectResponse PutObjectIntoS3(PutObjectParams pop)
        {
            var config = new AmazonS3Config()
            {
                RegionEndpoint = pop.RegEndpoint
            };

            PutObjectResponse resp = null;

            try
            {
                var putReq = new PutObjectRequest
                {
                    BucketName  = pop.BucketName,
                    Key         = pop.PhotoName,
                    InputStream = pop.InputStrem,
                    //FilePath = filePath,
                    ContentType = pop.ContentType
                };

                putReq.Metadata.Add("x-amz-meta-title", "faceRecognitionImages");

                using (s3Client = new AmazonS3Client(awsAccessKeyId, awsSecretAccessKey, config))
                {
                    resp = s3Client.PutObject(putReq);
                }

                if (resp == null)
                {
                    throw new Exception("AmazonS3Client PutObject method call return null.");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            return(resp);
        }