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); }
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); } }