protected ActionResult GetImage(IImageQuery imageQuery, long id, Func <byte[], byte[]> imageModifier = null) { if (IdValidator.IsInvalid(id)) { return(new EmptyResult()); } byte[] image = imageQuery.GetImageById(id); return(ImageToFile(imageModifier, image)); }
public ImgurImageSource(IImageQuery query, CancellationToken cancelToken) { _query = query; _queryResolver = new ImgurQueryResolver(); QueueLoadOfCachedFiles(); StartDownloadingImages(cancelToken); }
private void QueryBinaryAlgo(IImageQuery imageQuery, string queryImagePath, object setting) { btnSelectQueryImage.IsEnabled = false; btnQueryImage.IsEnabled = false; var disphacher = this.Dispatcher; WriteQueryStatus("Start querying..."); List <ImageRecord> searchImage = new List <ImageRecord>(); System.Threading.Tasks.Task queryTask = System.Threading.Tasks.Task.Factory.StartNew( () => { _stopWatch = Stopwatch.StartNew(); searchImage = imageQuery.QueryImage(queryImagePath, setting); _stopWatch.Stop(); return(new { SearchImage = searchImage, TimeLapse = _stopWatch.ElapsedMilliseconds }); }); System.Threading.Tasks.Task waitTask = System.Threading.Tasks.Task.Factory.StartNew( () => { //const int incr = 1; //int t = incr; string msg = ""; //while (!queryTask.Wait(incr * 500)) //{ // msg = string.Format("Query is taking more than {0} second...", t); // WriteQueryStatus(msg); // t += incr; //} queryTask.Wait(); disphacher.Invoke((Action)(() => { ImageList.ItemsSource = searchImage; lblTotalCount.Text = searchImage.Count.ToString(); lblQueryStatus.Text = string.Format("Image Query Completed, it took {0} ms", _stopWatch.ElapsedMilliseconds); btnSelectQueryImage.IsEnabled = true; btnQueryImage.IsEnabled = true; })); }); }
public Task <IImageQueryResult> ExecuteQuery(IImageQuery imageQuery, CancellationToken cancelToken) { return(Task.Run(async() => { var result = new ImgurQueryResult(); try { using (HttpClient client = new HttpClient()) { client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); //var url = @"https://api.imgur.com/3/gallery/search/top//1"; var url = $@"https://api.imgur.com/3/gallery/search//{_page}"; var query = FormatQueryString(Tuple.Create("q", imageQuery.QueryString)); client.DefaultRequestHeaders.Add("Authorization", ImgurClientToken); _page++; using (HttpResponseMessage response = await client.GetAsync($"{url}{query}")) { response.EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); JObject json = JObject.Parse(responseBody); result.Parse(json); } } } catch (Exception ex) { System.Console.WriteLine(ex.ToString()); } return result as IImageQueryResult; })); }
/// <summary> /// Construct a WebImageFinder using the specified IImageQuery provider /// </summary> public WebImageFinder(IImageQuery provider) { _queryProvider = provider; }
private void QueryBinaryAlgo(IImageQuery imageQuery, string queryImagePath, object setting) { btnSelectQueryImage.IsEnabled = false; btnQueryImage.IsEnabled = false; var disphacher = this.Dispatcher; WriteQueryStatus("Start querying..."); List<ImageRecord> searchImage = new List<ImageRecord>(); System.Threading.Tasks.Task queryTask = System.Threading.Tasks.Task.Factory.StartNew( () => { _stopWatch = Stopwatch.StartNew(); searchImage = imageQuery.QueryImage(queryImagePath, setting); _stopWatch.Stop(); return new { SearchImage = searchImage, TimeLapse = _stopWatch.ElapsedMilliseconds }; }); System.Threading.Tasks.Task waitTask = System.Threading.Tasks.Task.Factory.StartNew( () => { //const int incr = 1; //int t = incr; string msg = ""; //while (!queryTask.Wait(incr * 500)) //{ // msg = string.Format("Query is taking more than {0} second...", t); // WriteQueryStatus(msg); // t += incr; //} queryTask.Wait(); disphacher.Invoke((Action)(() => { ImageList.ItemsSource = searchImage; lblTotalCount.Text = searchImage.Count.ToString(); lblQueryStatus.Text = string.Format("Image Query Completed, it took {0} ms", _stopWatch.ElapsedMilliseconds); btnSelectQueryImage.IsEnabled = true; btnQueryImage.IsEnabled = true; })); }); }
private void QueryImage(string queryImagePath) { try { ImageList.ItemsSource = null; if (!string.IsNullOrEmpty(queryImagePath)) { object setting = null; QueryImageFullPath = queryImagePath; IImageQuery imageQuery = null; switch (SelectedAlgo) { case emAlgo.Undetermined: MessageBox.Show("Please select Algorithm for indexing"); return; case emAlgo.pHash: imageQuery = new pHashQuery(); QueryBinaryAlgo(imageQuery, queryImagePath, setting); break; case emAlgo.RBGHistogram: imageQuery = new RGBProjectQuery(); QueryBinaryAlgo(imageQuery, queryImagePath, setting); break; case emAlgo.bhattacharyya: imageQuery = new BhattacharyyaQuery(); QueryBinaryAlgo(imageQuery, queryImagePath, setting); break; case emAlgo.CEDD: emCEDDAlgo selectedCeddAlgo = GetSelectedCEDDAlgo(); if (selectedCeddAlgo == emCEDDAlgo.BKTree) { imageQuery = new CEDDQuery2(); } else { imageQuery = new CEDDQuery(); } int goodMatchDistance = nudCEDDGoodMatchThreshold.Value.Value; QueryBinaryAlgo(imageQuery, queryImagePath, goodMatchDistance); break; case emAlgo.SURF: case emAlgo.AccordSurf: case emAlgo.Locate: QueryBgWorker.RunWorkerAsync(); break; default: MessageBox.Show("Algorithm not currently supported"); return; } } } catch (Exception ex) { MessageBox.Show(ex.ToString(), "Error in Image Query", MessageBoxButton.OK, MessageBoxImage.Error); } }