public async Task <ActionResult> Index() { if (Request.HttpMethod == "GET") { return(View()); } var model = new HandwritingModel(); HandwritingRecognitionOperation op = null; await RunOperationOnImage(async stream => { op = await VisionServiceClient.CreateHandwritingRecognitionOperationAsync(stream); }); while (true) { await Task.Delay(5000); var result = await VisionServiceClient.GetHandwritingRecognitionOperationResultAsync(op); if (result.Status == HandwritingRecognitionOperationStatus.NotStarted || result.Status == HandwritingRecognitionOperationStatus.Running) { continue; } model.Result = result.RecognitionResult; break; } model.ImageDump = GetInlineImageWithLines(model.Result); return(View(model)); }
public async Task <ActionResult> Index(HttpPostedFileBase file) { if (Request.HttpMethod == "GET") { return(View()); } var model = new HandwritingModel(); HandwritingRecognitionOperation op = null; await RunOperationOnImage(async stream => { op = await VisionServiceClient.CreateHandwritingRecognitionOperationAsync(stream); }); while (true) { await Task.Delay(5000); var result = await VisionServiceClient.GetHandwritingRecognitionOperationResultAsync(op); if (result.Status == HandwritingRecognitionOperationStatus.NotStarted || result.Status == HandwritingRecognitionOperationStatus.Running) { continue; } model.Result = result.RecognitionResult; break; } model.ImageDump = GetInlineImageWithLines(model.Result); if (file != null && file.ContentLength > 0) { if (!file.ContentType.StartsWith("image")) { TempData["Message"] = "Only image files may be uploaded"; } else { try { CloudStorageAccount account = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]); CloudBlobClient client = account.CreateCloudBlobClient(); CloudBlobContainer container = client.GetContainerReference("pictures"); CloudBlockBlob photo = container.GetBlockBlobReference(Path.GetFileName(file.FileName)); await photo.UploadFromStreamAsync(file.InputStream); using (var outputStream = new MemoryStream()) { file.InputStream.Seek(0L, SeekOrigin.Begin); var settings = new ResizeSettings { MaxWidth = 192 }; ImageBuilder.Current.Build(file.InputStream, outputStream, settings); outputStream.Seek(0L, SeekOrigin.Begin); container = client.GetContainerReference("pictures"); CloudBlockBlob thumbnail = container.GetBlockBlobReference(Path.GetFileName(file.FileName)); await thumbnail.UploadFromStreamAsync(outputStream); } } catch (Exception ex) { // In case something goes wrong TempData["Message"] = ex.Message; } } } return(View(model)); }