示例#1
0
        public async Task <ImageAnalysisVM> AnalyzeImageFileAsync(IFormFile file, string baseUrl)
        {
            var imageAnalysisVM = new ImageAnalysisVM()
            {
                Filename = $"{DateTime.Now.ToString("yyyyMMddHHmmss")}_{Guid.NewGuid()}"
            };

            var webPath = _hostingEnv.WebRootPath;
            var path    = Path.Combine("", webPath + @"\img\" + imageAnalysisVM.Filename + ".png");

            using (var stream = new FileStream(path, FileMode.Create))
            {
                await file.CopyToAsync(stream);
            }

            using (var imageStream = new FileStream(path, FileMode.Open))
            {
                imageAnalysisVM.ImageAnalysis = await AnalyzeImageInStreamAsync(imageStream);

                imageAnalysisVM.Url     = $"{baseUrl}img/{imageAnalysisVM.Filename}.png";
                imageAnalysisVM.Message = "Success";
            }

            return(imageAnalysisVM);
        }
示例#2
0
        public async Task <ImageAnalysisVM> AnalyzeImageFileOrUrlAsync(IFormCollection form, string urlBase)
        {
            var imageAnalysisVM = new ImageAnalysisVM();

            if (form.Files.Count > 0)
            {
                try
                {
                    foreach (var file in form.Files)
                    {
                        if (ValidateFile.IsValidImg(file))
                        {
                            imageAnalysisVM = await AnalyzeImageFileAsync(file, urlBase);

                            imageAnalysisVM.Message = "Success";
                        }
                        else
                        {
                            imageAnalysisVM.Message = "Error: Please make sure to choose an image (.jpeg, .png, .gif) less than or equal to 4 MB and try again!";
                        }
                    }
                }
                catch (Exception)
                {
                    imageAnalysisVM.Message = $"Error: An error occured while analyzing the image.";
                }
                return(imageAnalysisVM);
            }
            else
            {
                try
                {
                    var picUrl = form.FirstOrDefault(x => x.Key == "picurl").Value;

                    imageAnalysisVM = await AnalyzeUrlImage(picUrl);

                    imageAnalysisVM.Message = "Success";
                }
                catch (Exception)
                {
                    imageAnalysisVM.Message = $"Error: The given URL is not valid!";
                }
                return(imageAnalysisVM);
            }
        }