/// <summary> /// Reason : To get all similar files from folder with percentage of similarity for selected file. /// compare files from folder which are having length of file +- 100000 of original file. /// </summary> /// <param name="inputFilePath">Input file path of image</param> /// <param name="length">Length of image file that varies to compare with another file</param> /// <param name="percentageString"> returns percentage of similarities of matched images in string seperated by comma(,)</param> public void GetAllSimilarImages(string inputFilePath, string appStartPath, double length, ref List <DuplicateImageDetails> duplicateImageList) { { try { if (!File.Exists(inputFilePath)) { return; } DuplicateImageDetails imgOriginalFile = new DuplicateImageDetails(); imgOriginalFile.FilePath = inputFilePath; imgOriginalFile.FileName = inputFilePath.Contains("\\") ? inputFilePath.Split('\\')[inputFilePath.Split('\\').Count() - 1] : inputFilePath; imgOriginalFile.Percentage = "Original Selected File"; duplicateImageList.Add(imgOriginalFile); int count = 0; FileInfo fileInfo = new FileInfo(inputFilePath); DataLayer.EntityModel.Image metadataInputImgObj = new DataLayer.EntityModel.Image(); //Get metadata of input file _faceDetection = new FaceDetection(appStartPath); _imgGrabber = new ImageGrabber(); metadataInputImgObj = GetImageMetadata(inputFilePath, appStartPath); var bestMatchImageList = new DataLayer.ModelClasses.Image().GetImagesByBestMatch(metadataInputImgObj); // for Image similarity percentage need to compare both images foreach (var infoObj in bestMatchImageList) { DuplicateImageDetails duplicateImageCheck = new DuplicateImageDetails(); duplicateImageCheck.FilePath = infoObj.ImagePath; duplicateImageCheck.FileName = infoObj.ImagePath.Contains("\\") ? infoObj.ImagePath.Split('\\')[infoObj.ImagePath.Split('\\').Count() - 1] : infoObj.ImagePath; duplicateImageCheck.Percentage = ""; duplicateImageList.Add(duplicateImageCheck); count++; } } catch (Exception) { } } }