Beispiel #1
0
        public async void ImageTagManipulation()
        {
            using (MockContext context = MockContext.Start(this.GetType().Name))
            {
                HttpMockServer.Initialize(this.GetType().Name, "ImageTagManipulation", RecorderMode);

                var projectId = CreateTrainedImageClassificationProject();

                ICustomVisionTrainingClient client = GetTrainingClient();

                var untaggedImages = client.GetUntaggedImagesAsync(projectId).Result;
                Assert.Equal(0, untaggedImages.Count);

                var taggedImages = client.GetTaggedImagesAsync(projectId).Result;
                Assert.Equal(10, taggedImages.Count);

                var imageToBeModified = taggedImages[0].Id;
                var tagToBeModified   = taggedImages[0].Tags[0].TagId;

                await client.DeleteImageTagsAsync(projectId, new string[] { imageToBeModified.ToString() }, new string[] { tagToBeModified.ToString() });

                untaggedImages = client.GetUntaggedImagesAsync(projectId).Result;
                Assert.Equal(1, untaggedImages.Count);

                var imageTags = new ImageTagCreateEntry(imageToBeModified, tagToBeModified);
                var result    = client.CreateImageTagsAsync(projectId, new ImageTagCreateBatch(new ImageTagCreateEntry[] { imageTags })).Result;

                Assert.Equal(1, result.Created.Count);
                Assert.Equal(imageToBeModified, result.Created[0].ImageId);
                Assert.Equal(tagToBeModified, result.Created[0].TagId);

                await client.DeleteProjectAsync(projectId);
            }
        }
Beispiel #2
0
        public async Task <IActionResult> ChangeImageTag(Guid projectId, Guid imageId, ChangeImageTagViewModel changeImageTagViewModel)
        {
            if (!ModelState.IsValid)
            {
                if (changeImageTagViewModel.TagId == null)
                {
                    TempData["Warning"] = "You must choose a tag for the photo.";
                }
                return(RedirectToAction(nameof(ImageController.ChangeImageTag), new { projectId, imageId }));
            }

            Image image = trainingApi.GetImagesByIds(projectId, new List <string>()
            {
                imageId.ToString()
            }).FirstOrDefault();
            IList <string> tagsList = image.Tags?.Select(x => x.TagId.ToString()).ToList();

            if (tagsList != null)
            {
                trainingApi.DeleteImageTags(projectId, new List <string>()
                {
                    imageId.ToString()
                }, tagsList);
            }

            ImageTagCreateEntry         imageTagCreateEntry   = new ImageTagCreateEntry(imageId, Guid.Parse(changeImageTagViewModel.TagId));
            IList <ImageTagCreateEntry> imageTagCreateEntries = new List <ImageTagCreateEntry>()
            {
                imageTagCreateEntry
            };
            ImageTagCreateBatch createBatch = new ImageTagCreateBatch(imageTagCreateEntries);

            trainingApi.CreateImageTags(projectId, createBatch);

            return(RedirectToAction(nameof(ProjectController.Details), "Project", new { projectId }));
        }