public void GenerateJsonListOfImageComparison() { var message = new ImageComparisonContract() { ImageComparisonList = new List <ImageComparisonInfo>() }; var fileNames = Directory.GetFiles(@"e:\Temp\Screen\"); var images = new List <ImageComparisonInfo>(); for (int index = 0; index < 10; index += 2) { var imageInfo = new ImageComparisonInfo() { ScreenShotId = index, FirstImagePath = fileNames[index], SecondImagePath = fileNames[index + 1], DiffImagePath = outputFile + "_" + index + ".png" }; images.Add(imageInfo); } message.ImageComparisonList.AddRange(images); var client = new RestClient("http://localhost:8900/KeplerImageProcessorService/"); var request = new RestRequest("AddImagesForDiffGeneration", Method.POST); request.RequestFormat = DataFormat.Json; request.AddJsonBody(message); client.Execute(request); }
/// <summary> /// Analyze two list of screenshots from the same baseline: new (In queue) and old (Passed) /// </summary> /// <param name="newScreenShotsForProcessing"></param> /// <param name="oldPassedBaselineScreenShots"></param> /// <returns>List of image comparison for diff generating</returns> private IEnumerable <ImageComparisonInfo> GenerateImageComparison(List <ScreenShot> newScreenShotsForProcessing, List <ScreenShot> oldPassedBaselineScreenShots) { var resultImagesForComparison = new List <ImageComparisonInfo>(); foreach (var newScreenShot in newScreenShotsForProcessing) { var oldScreenShot = oldPassedBaselineScreenShots.Find(oldScreen => oldScreen.Name == newScreenShot.Name); ImageComparisonInfo imageComparison = null; // if there is no old screenshots => it's first build and first uploaded screenshots. // Just set screenshots as passed if (oldScreenShot == null) { newScreenShot.BaseLineImagePath = newScreenShot.ImagePath; var screenShotPreviewImagePath = newScreenShot.PreviewImagePath ?? ""; imageComparison = new ImageComparisonInfo() { ScreenShotName = newScreenShot.Name, LastPassedScreenShotId = newScreenShot.Id, FirstImagePath = newScreenShot.ImagePath, FirstPreviewPath = screenShotPreviewImagePath, SecondImagePath = newScreenShot.ImagePath, SecondPreviewPath = screenShotPreviewImagePath, DiffImagePath = newScreenShot.DiffImagePath, DiffPreviewPath = newScreenShot.DiffPreviewPath, ScreenShotId = newScreenShot.Id, }; } else { imageComparison = new ImageComparisonInfo() { ScreenShotName = newScreenShot.Name, LastPassedScreenShotId = oldScreenShot.Id, FirstImagePath = oldScreenShot.ImagePath, FirstPreviewPath = oldScreenShot.PreviewImagePath, SecondImagePath = newScreenShot.ImagePath, SecondPreviewPath = newScreenShot.PreviewImagePath, DiffImagePath = newScreenShot.DiffImagePath, DiffPreviewPath = newScreenShot.DiffPreviewPath, ScreenShotId = newScreenShot.Id, }; newScreenShot.BaseLineImagePath = oldScreenShot.ImagePath; } resultImagesForComparison.Add(imageComparison); ScreenShotRepository.Instance.Update(newScreenShot); } return(resultImagesForComparison); }
public void TaskGeneratorImage() { var imageTaskGenerator = TaskGenerator.GetTaskGenerator; var fileNames = Directory.GetFiles(@"e:\Temp\Screen\"); var images = new List <ImageComparisonInfo>(); for (int index = 0; index < 3; index += 2) { var imageInfo = new ImageComparisonInfo() { FirstImagePath = fileNames[index], SecondImagePath = fileNames[index + 1], DiffImagePath = outputFile + "_" + index + ".png" }; images.Add(imageInfo); } var countImages = images.Count; var startDate = DateTime.Now; Console.WriteLine("Start Date: " + startDate); imageTaskGenerator.AddImagesForProcessing(images); Console.WriteLine("Max images count " + countImages); var processedImagesCount = 0; do { Thread.Sleep(5000); processedImagesCount += imageTaskGenerator.GetProcessedImages().Count(); Console.WriteLine("Processed images: " + processedImagesCount); } while (processedImagesCount < countImages); var finishDate = DateTime.Now; Console.WriteLine("Finish Date: " + finishDate); Console.WriteLine("Test duration: " + (finishDate - startDate)); }
public void DiffImageTest() { var imageProcessor = new ImageComparator(); var fileNames = Directory.GetFiles(@"e:\Temp\Screen\"); for (int index = 0; index < fileNames.Length - 3;) { var imageInfo = new ImageComparisonInfo() { FirstImagePath = fileNames[index], SecondImagePath = fileNames[index + 1], DiffImagePath = outputFile + "_" + index + ".png" }; imageProcessor.ImageComparisonInfo = imageInfo; var isImageDifferent = imageProcessor.GetCompositeImageDiff(); index += 2; } }
private ImageComparisonInfo GetImageDiff(ImageComparator imageComparator) { ImageComparisonInfo diffImage; try { diffImage = imageComparator.GetCompositeImageDiff(); } catch (Exception ex) { var errorMessage = $"{ex.Message} {ex.StackTrace}"; diffImage = new ImageComparisonInfo() { ErrorMessage = errorMessage, ScreenShotId = imageComparator.ImageComparisonInfo.ScreenShotId }; new RestKeplerServiceClient().LogError(errorMessage); } return(diffImage); }
public ImageComparator(ImageComparisonInfo imageComparisonInfo) { this.ImageComparisonInfo = imageComparisonInfo; }