/// <summary> /// Unmarshaller the response from the service to the response class. /// </summary> /// <param name="context"></param> /// <returns></returns> public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context) { DetectModerationLabelsResponse response = new DetectModerationLabelsResponse(); context.Read(); int targetDepth = context.CurrentDepth; while (context.ReadAtDepth(targetDepth)) { if (context.TestExpression("ModerationLabels", targetDepth)) { var unmarshaller = new ListUnmarshaller <ModerationLabel, ModerationLabelUnmarshaller>(ModerationLabelUnmarshaller.Instance); response.ModerationLabels = unmarshaller.Unmarshall(context); continue; } if (context.TestExpression("ModerationModelVersion", targetDepth)) { var unmarshaller = StringUnmarshaller.Instance; response.ModerationModelVersion = unmarshaller.Unmarshall(context); continue; } } return(response); }
public static void Example() { String photo = "input.jpg"; String bucket = "bucket"; AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient(); DetectModerationLabelsRequest detectModerationLabelsRequest = new DetectModerationLabelsRequest() { Image = new Image() { S3Object = new S3Object() { Name = photo, Bucket = bucket }, }, MinConfidence = 60F }; try { DetectModerationLabelsResponse detectModerationLabelsResponse = rekognitionClient.DetectModerationLabels(detectModerationLabelsRequest); Console.WriteLine("Detected labels for " + photo); foreach (ModerationLabel label in detectModerationLabelsResponse.ModerationLabels) { Console.WriteLine("Label: {0}\n Confidence: {1}\n Parent: {2}", label.Name, label.Confidence, label.ParentName); } } catch (Exception e) { Console.WriteLine(e.Message); } }
private void btnLoad_Click(object sender, RoutedEventArgs e) { OpenFileDialog op = new OpenFileDialog(); op.Title = "Select a picture"; op.Filter = "All supported graphics|*.jpg;*.jpeg;*.png|" + "JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|" + "Portable Network Graphic (*.png)|*.png"; if (op.ShowDialog() == true) { imgPhoto.Source = new BitmapImage(new Uri(op.FileName)); } String photo = imgPhoto.Source.ToString().Substring(8); Amazon.Rekognition.Model.Image image = new Amazon.Rekognition.Model.Image(); try { using (FileStream fs = new FileStream(photo, FileMode.Open, FileAccess.Read)) { byte[] data = null; data = new byte[fs.Length]; fs.Read(data, 0, (int)fs.Length); image.Bytes = new MemoryStream(data); } } catch (Exception) { return; } AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient(); DetectModerationLabelsRequest detectModerationLabelsRequest = new DetectModerationLabelsRequest() { Image = image, MinConfidence = 60F }; try { DetectModerationLabelsResponse detectModerationLabelsResponse = rekognitionClient.DetectModerationLabels(detectModerationLabelsRequest); List <Moderation> items = new List <Moderation>(); foreach (ModerationLabel label in detectModerationLabelsResponse.ModerationLabels) { items.Add(new Moderation() { Name = label.Name, Confidence = label.Confidence, ParentName = label.ParentName }); } lvModeration.ItemsSource = items; } catch (Exception) { Console.WriteLine("Error!!!"); return; } }
public async Task OnPostAsync() { using (var fileStream = Upload.OpenReadStream()) { using (var ms = new MemoryStream()) { fileStream.CopyTo(ms); Result = await rekognition.DetectModerationLabelsAsync(new DetectModerationLabelsRequest { Image = new Image { Bytes = ms, } }); } } }
public DetectModerationLabelsResponse ImageModeration() { Image image = new Image(); using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { byte[] data = null; data = new byte[fs.Length]; fs.Read(data, 0, (int)fs.Length); image.Bytes = new MemoryStream(data); } AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient(); DetectModerationLabelsRequest detectModerationLabelsRequest = new DetectModerationLabelsRequest() { Image = image, MinConfidence = 60F }; DetectModerationLabelsResponse detectModerationLabelsResponse = rekognitionClient.DetectModerationLabels(detectModerationLabelsRequest); return(detectModerationLabelsResponse); }
private void OnImageModeration(object sender, RoutedEventArgs e) { if (isChoose) { DetectModerationLabelsResponse response = pbMyPictureBox.ImageModeration(); string result = ""; foreach (ModerationLabel label in response.ModerationLabels) { result += $"Label: {label.Name}\n\tConfidence: {Math.Round(label.Confidence, 2)}%\n\n"; } if (response.ModerationLabels.Count == 0) { result = "Image is Safe"; } txtResult.Text = result; } else { txtResult.Text = "Error: File Not Choose"; } }
private async Task <Boolean> ReadObjectDataAsync(String bucketName, String keyName, float confidence, String pendingimagesbucket, String quarantinedimagesbucket, String templatesBucket) { try { GetObjectRequest request = new GetObjectRequest { BucketName = bucketName, Key = keyName }; using (GetObjectResponse response = await s3EmailsClient.GetObjectAsync(request)) { MimeMessage message = MimeMessage.Load(response.ResponseStream); MailAddressCollection mailAddresses = (MailAddressCollection)message.From; MailAddressCollection sendToAddresses = (MailAddressCollection)message.To; emailTo = mailAddresses[0].Address; if (sendToAddresses[0].ToString().ToLower().Contains("northnorthants")) { west = false; Console.WriteLine("Processing email for North Northants from : " + emailTo); } else { Console.WriteLine("Processing email for West Northants from : " + emailTo); } subject = message.Subject; name = message.From[0].Name; int numOfAttachments = 0; imageCheckPass = true; foreach (MimeEntity attachment in message.Attachments) { if (!(attachment is MessagePart)) { numOfAttachments++; MimePart part = (MimePart)attachment; String fileName = part.FileName; if (!fileName.ToLower().Contains("pdf")) { try { Stream objectStream = new MemoryStream(); part.Content.DecodeTo(objectStream); byte[] attachmentArray = new byte[objectStream.Length]; long attachmentLength = objectStream.Length; using (var imageStream = part.Content.Open()) { PutObjectRequest putRequest = new PutObjectRequest() { InputStream = imageStream, BucketName = pendingimagesbucket, Key = fileName, }; putRequest.Headers.ContentLength = attachmentLength; await s3Client.PutObjectAsync(putRequest); Console.WriteLine("Written to S3 : {0}", fileName); } } catch (Exception error) { Console.WriteLine("ERROR : Processing Image : '{0}' ", error.Message); Console.WriteLine(error.StackTrace); } AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient(); DetectModerationLabelsRequest detectModerationLabelsRequest = new DetectModerationLabelsRequest() { Image = new Image() { S3Object = new Amazon.Rekognition.Model.S3Object() { Name = fileName, Bucket = pendingimagesbucket }, }, MinConfidence = 60F }; try { DetectModerationLabelsResponse detectModerationLabelsResponse = await rekognitionClient.DetectModerationLabelsAsync(detectModerationLabelsRequest); Console.WriteLine("Detected labels"); foreach (ModerationLabel label in detectModerationLabelsResponse.ModerationLabels) { if (!String.IsNullOrEmpty(label.ParentName)) { Console.WriteLine("Found - Label: {0}\n Confidence: {1}\n Parent: {2}", label.Name, label.Confidence, label.ParentName); if (label.Confidence > confidence) { Console.WriteLine("Rejected - Label: {0}\n Confidence: {1}", label.Name, label.Confidence); imageCheckPass = false; } } } try { if (imageCheckPass) { DeleteObjectRequest deleteRequest = new DeleteObjectRequest { BucketName = pendingimagesbucket, Key = fileName }; await s3Client.DeleteObjectAsync(deleteRequest); } else { Console.WriteLine("Image Rejection Started"); try { Console.WriteLine("Clearing : Deleting " + fileName + " from : " + quarantinedimagesbucket); DeleteObjectRequest clearRequest = new DeleteObjectRequest { BucketName = quarantinedimagesbucket, Key = fileName }; await s3Client.DeleteObjectAsync(clearRequest); } catch (Exception) {} Console.WriteLine("Quarantining : Copying " + fileName + " to : " + quarantinedimagesbucket); CopyObjectRequest copyRequest = new CopyObjectRequest { SourceBucket = pendingimagesbucket, SourceKey = fileName, DestinationBucket = quarantinedimagesbucket, DestinationKey = fileName }; await s3Client.CopyObjectAsync(copyRequest); Console.WriteLine("Deleting : Deleting " + fileName + " from : " + pendingimagesbucket); DeleteObjectRequest deleteRequest = new DeleteObjectRequest { BucketName = pendingimagesbucket, Key = fileName }; await s3Client.DeleteObjectAsync(deleteRequest); Console.WriteLine("Deleting : Deleting " + fileName + " from : " + pendingimagesbucket); Console.WriteLine("Image Rejection Ended"); } } catch (Exception error) { Console.WriteLine("ERROR : Moving/Deleting Image : " + error.Message); Console.WriteLine(error.StackTrace); } } catch (Exception e) { Console.WriteLine(e.Message); } } } else { Console.WriteLine("Ignoring attachment"); } } Console.WriteLine("Num of attachments : {0}", numOfAttachments); emailBody = message.HtmlBody; for (int currentHeader = 0; currentHeader < message.Headers.Count; currentHeader++) { if (message.Headers[currentHeader].Field.ToString().Equals("X-SES-Spam-Verdict") && message.Headers[currentHeader].Value.ToString().Equals("PASS")) { spamCheckPass = true; } if (message.Headers[currentHeader].Field.ToString().Equals("X-SES-Virus-Verdict") && message.Headers[currentHeader].Value.ToString().Equals("PASS")) { virusCheckPass = true; } } if (spamCheckPass && virusCheckPass && imageCheckPass) { emailPassedChecks = true; } else { emailBody = "Failed text"; try { GetObjectRequest objectRequest = new GetObjectRequest { BucketName = templatesBucket, Key = "email-unsafe-rejection.txt" }; using (GetObjectResponse objectResponse = await s3TemplatesClient.GetObjectAsync(objectRequest)) using (Stream responseStream = objectResponse.ResponseStream) using (StreamReader reader = new StreamReader(responseStream)) { emailBody = reader.ReadToEnd(); } if (!virusCheckPass) { emailBody = emailBody.Replace("AAA", "a virus"); } else if (!spamCheckPass) { emailBody = emailBody.Replace("AAA", "spam"); } else if (!imageCheckPass) { emailBody = emailBody.Replace("AAA", "inappropriate content in attachments"); } else { emailBody = emailBody.Replace("AAA", "unknown"); } emailBody = emailBody.Replace("DDD", name); } catch (AmazonS3Exception e) { Console.WriteLine("ERROR : Reading Email : '{0}' when reading rejection template", e.Message); } catch (Exception e) { Console.WriteLine("ERROR : An Unknown encountered : '{0}' when reading rejection template", e.Message); } } } } catch (AmazonS3Exception error) { Console.WriteLine("ERROR : Reading Email : '{0}' when reading email", error.Message); Console.WriteLine(error.StackTrace); } catch (Exception error) { Console.WriteLine("ERROR : An Unknown encountered : {0}' when reading email", error.Message); Console.WriteLine(error.StackTrace); } return(emailPassedChecks); }