private async void OnTagSelectionChanged(object sender, SelectionChangedEventArgs e) { if (this.projectTagsListView.SelectedValue != null) { this.SelectedTag = this.projectTagsListView.SelectedValue as ImageTagModel; await this.LoadTagImagesFromService(); } else { this.SelectedTagImages.Clear(); } }
private async Task CreateTagAsync(string name) { try { ImageTagModel result = await trainingApi.CreateTagAsync(this.CurrentProject.Id, name); this.TagsInCurrentGroup.Add(result); this.needsTraining = true; this.DismissFlyout(); } catch (Exception e) { await Util.GenericApiCallExceptionHandler(e, "Failure creating tag"); } }
private async void UploadButton_Click(object sender, RoutedEventArgs e) { if (urls.Count > 0) { ImageUrlCreateBatch createBatch = new ImageUrlCreateBatch(); ImageTagModel imageTagModel = (ImageTagModel)tagsComboBox.SelectedItem; createBatch.TagIds = new List <Guid> { imageTagModel.Id }; createBatch.Urls = urls; await MainWindow.currentWindow.UploadOnlineImage(projectId, createBatch); ProjectPage projectPage = (ProjectPage)MainWindow.currentWindow.mainFrame.Content; projectPage.RefreshTags(); Window.GetWindow(this).Close(); } }
private void UploadButton_Click(object sender, RoutedEventArgs e) { string[] fileNames = (string[])ImageListBox.ItemsSource; Task[] tasks = new Task[fileNames.Length]; ImageTagModel imageTagModel = (ImageTagModel)tagsComboBox.SelectedItem; for (int i = 0; i < fileNames.Length; i++) { FileStream fileStream = File.Open(fileNames[i], FileMode.Open, FileAccess.Read, FileShare.ReadWrite); tasks[i] = MainWindow.currentWindow.UploadImage(projectId, fileStream, new List <string> { imageTagModel.Id.ToString() }); } Task.WaitAll(tasks); ProjectPage projectPage = (ProjectPage)MainWindow.currentWindow.mainFrame.Content; projectPage.RefreshTags(); Window.GetWindow(this).Close(); }
private void TagListView_SelectionChanged(object sender, SelectionChangedEventArgs e) { ImageTagModel imageTagModel = (ImageTagModel)TagListView.SelectedItem; if (imageTagModel != null) { List <string> imageTagList = new List <string>(); imageTagList.Add(imageTagModel.Id.ToString()); int take = imageTagModel.ImageCount; if (take > 0) { List <ImageModel> imageList = MainWindow.currentWindow.GetTaggedImages(projectId, imageTagList, take); ImageListBox.ItemsSource = imageList; } else { ImageListBox.ItemsSource = new List <ImageModel>(); } } }
private void ConfirmButton_Click(object sender, RoutedEventArgs e) { if (String.IsNullOrEmpty(tagNameTextBox.Text)) { tipTextBlock.Text = "请输入Tag Name"; return; } try { ImageTagModel tagModel = MainWindow.currentWindow.NewTag(page.GetProjectId(), tagNameTextBox.Text); } catch { tipTextBlock.Text = "新增Tag失败,检查是否已经存在该Tag"; return; } page.RefreshTags(); this.Close(); }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestMessage req, TraceWriter log) { try { var allTags = new List <string>(); var json = req.Content.ReadAsStringAsync().Result; var jobj = JObject.Parse(json); var tags = (JArray)jobj["tags"]; var term = jobj["term"].ToString(); var projectId = jobj["projectId"].ToString(); var trainingKey = jobj["trainingKey"].ToString(); var offset = 0; if (jobj["offset"] != null) { offset = (int)jobj["offset"]; } var imageUrls = await SearchForImages(term, offset); var api = new TrainingApi(new TrainingApiCredentials(trainingKey)); var project = api.GetProject(Guid.Parse(projectId)); var tagModels = new List <ImageTagModel>(); var existingTags = api.GetTags(project.Id); foreach (string tag in tags) { ImageTagModel model = existingTags.Tags.SingleOrDefault(t => t.Name == tag); if (model == null) { model = api.CreateTag(project.Id, tag.Trim()); } tagModels.Add(model); } var batch = new ImageUrlCreateBatch(tagModels.Select(m => m.Id).ToList(), imageUrls); var summary = api.CreateImagesFromUrls(project.Id, batch); //if(!summary.IsBatchSuccessful) // return req.CreateErrorResponse(HttpStatusCode.BadRequest, "Image batch was unsuccessful"); //Traing the classifier and generate a new iteration, that we'll set as the default var iteration = api.TrainProject(project.Id); while (iteration.Status == "Training") { Thread.Sleep(1000); iteration = api.GetIteration(project.Id, iteration.Id); } iteration.IsDefault = true; api.UpdateIteration(project.Id, iteration.Id, iteration); return(req.CreateResponse(HttpStatusCode.OK, iteration.Id)); } catch (Exception e) { var exception = e.GetBaseException(); return(req.CreateErrorResponse(HttpStatusCode.BadRequest, exception.Message)); } async Task <List <string> > SearchForImages(string term, int offset) { var client = new HttpClient(); client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "c2adf0e5c057447ea9e0f50cc5202251"); var uri = $"https://api.cognitive.microsoft.com/bing/v7.0/images/search?count=50&q={term}&offset={offset}"; var json = await client.GetStringAsync(uri); var jobj = JObject.Parse(json); var arr = (JArray)jobj["value"]; var list = new List <string>(); foreach (var result in arr) { list.Add(result["contentUrl"].ToString()); } return(list); } }