Exemple #1
0
        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));
        }
Exemple #2
0
        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));
        }