public async Task <IActionResult> UploadFaceImageReturnCode([FromBody] UploadImageModel model) { try { var imageDataByteArray = Convert.FromBase64String(model.ImageData.Split(',').LastOrDefault()); var imageDataStream = new MemoryStream(imageDataByteArray); imageDataStream.Position = 0; if (imageDataStream == null || imageDataStream.Length == 0) { return(BadRequest("Dosya Tanımlanamadı.")); } var folderName = Path.Combine("Contents", "ProfilePics"); var filePath = Path.Combine(Directory.GetCurrentDirectory(), folderName); if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } var uniqueFileName = $"{Guid.NewGuid()}"; var dbPath = Path.Combine(folderName, uniqueFileName); using (var fileStream = new FileStream(Path.Combine(filePath, uniqueFileName), FileMode.Create)) { await imageDataStream.CopyToAsync(fileStream); } var hostingInformation = _hostingEnvironment.ContentRootPath; String fulldirectory = "./Contents/ProfilePics/" + uniqueFileName; String faceData = ""; FaceRecognitionDotNet.FaceRecognition abc = FaceRecognitionDotNet.FaceRecognition.Create(hostingInformation + "\\Contents\\ProfilePics\\"); var unknownImage = FaceRecognitionDotNet.FaceRecognition.LoadImageFile(fulldirectory); var returns = abc.FaceEncodings(unknownImage); if (returns.Count() > 0) { SerializationInfo info = new SerializationInfo(typeof(FaceRecognitionDotNet.FaceEncoding), new FormatterConverter()); StreamingContext context = new StreamingContext(); returns.First().GetObjectData(info, context); foreach (SerializationEntry entry in info) { var data = entry.Value; double[] array = (double[])data; faceData = String.Join(" ", array); break; } } var fileInfo = new System.IO.FileInfo(fulldirectory); fileInfo.Delete(); return(Ok(faceData)); } catch (Exception e) { return(BadRequest("Sistemde Hata Oluştu. " + e.Message)); } }
public async Task <IActionResult> UploadFaceImageReturnName([FromBody] UploadImageRecongnitionModel model) { try { var imageDataByteArray = Convert.FromBase64String(model.ImageData.Split(',').LastOrDefault()); var imageDataStream = new MemoryStream(imageDataByteArray); imageDataStream.Position = 0; if (imageDataStream == null || imageDataStream.Length == 0) { return(BadRequest("Dosya Tanımlanamadı.")); } var folderName = Path.Combine("Contents", "ProfilePics"); var filePath = Path.Combine(Directory.GetCurrentDirectory(), folderName); if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } var uniqueFileName = $"{Guid.NewGuid()}.jpg"; using (var fileStream = new FileStream(Path.Combine(filePath, uniqueFileName), FileMode.Create)) { await imageDataStream.CopyToAsync(fileStream); } // Simdi bu egitilmiş dataları string'den double array'e döndürelim. List <FaceRecognitionDotNet.FaceEncoding> egitilmis_data = new List <FaceRecognitionDotNet.FaceEncoding>(); for (int i = 0; i < model.FaceDetails.Count(); i++) { String[] stringdata = model.FaceDetails[i].Data.Split(' '); double[] data = new double[stringdata.Length]; for (int y = 0; y < data.Length; y++) { data[y] = Convert.ToDouble(stringdata[y]); } egitilmis_data.Add(FaceRecognitionDotNet.FaceRecognition.LoadFaceEncoding(data)); } // Simdi yeni gelen görseli dataya cevirelim. var hostingInformation = _hostingEnvironment.ContentRootPath; String fulldirectory = "./Contents/ProfilePics/" + uniqueFileName; FaceRecognitionDotNet.FaceRecognition abc = FaceRecognitionDotNet.FaceRecognition.Create(hostingInformation + "\\Contents\\ProfilePics\\"); var unknownImage = FaceRecognitionDotNet.FaceRecognition.LoadImageFile(fulldirectory); var returns = abc.FaceEncodings(unknownImage); var taninacak_encoding = returns.First(); // Simdi arsivden tanınacak kisiyi bulduralım. var sonuc = FaceRecognitionDotNet.FaceRecognition.CompareFaces(egitilmis_data, taninacak_encoding, 0.6); var indexOfSelectedPerson = sonuc.Select((item, i) => new { Item = item, Position = i }).FirstOrDefault(m => m.Item); //var fileInfo = new System.IO.FileInfo(fulldirectory); //fileInfo.Delete(); if (indexOfSelectedPerson == null) { return(Ok("Kişi Bulunamadı.")); } else { var returunModel = model.FaceDetails[indexOfSelectedPerson.Position].Id; return(Ok(returunModel)); } } catch (Exception e) { return(Ok("Sistemde Hata Oluştu. " + e.Message)); } }