示例#1
0
        public async Task SaveImage(RekognizedImage image)
        {
            using (var client = new AmazonDynamoDBClient(GetCredentials(), Region))
            {
                var table = Table.LoadTable(client, "Image");

                var document = new Document
                {
                    ["Hash"]   = image.Hash,
                    ["Width"]  = image.Width,
                    ["Height"] = image.Height
                };

                if (image.Faces.Count > 0)
                {
                    var face = image.Faces.First();
                    document["FaceHeight"] = face.FaceInfo.BoundingBox.Height;
                    document["FaceWidth"]  = face.FaceInfo.BoundingBox.Width;
                    document["FaceLeft"]   = face.FaceInfo.BoundingBox.Left;
                    document["FaceTop"]    = face.FaceInfo.BoundingBox.Top;
                }

                await table.PutItemAsync(document);
            }
        }
示例#2
0
        public async Task <RekognizedImage> RekognizeImage(byte[] imageData)
        {
            var dataService   = new DataService();
            var hash          = imageData.GetSha1Hash();
            var existingImage = await dataService.GetImage(hash);

            if (existingImage != null)
            {
                return(existingImage);
            }

            var convertedImage = _converterService.GetRekognitionCompatibleImage(imageData);

            if (!convertedImage.IsSizeOk())
            {
                throw new SourceImageContentTooLargeException();
            }

            if (!convertedImage.AreDimensionsOk())
            {
                throw new SourceImageDimensionsTooSmallException();
            }

            var client = new AmazonRekognitionClient(GetCredentials(), Region);

            var stream = new MemoryStream(convertedImage.ImageData);
            await stream.WriteAsync(convertedImage.ImageData, 0, convertedImage.ImageData.Length);

            stream.Seek(0, SeekOrigin.Begin);

            var image = new Image {
                Bytes = stream
            };
            var request = new RecognizeCelebritiesRequest {
                Image = image
            };
            var response = await client.RecognizeCelebritiesAsync(request);

            var recoknizedImage = new RekognizedImage
            {
                Width  = convertedImage.Width,
                Height = convertedImage.Height,
                Hash   = hash,
                Faces  = MapResponse(convertedImage, response)
            };

            await dataService.SaveImage(recoknizedImage);

            return(recoknizedImage);
        }